Gibt es eine generische Art und Weise zu routen URLs in Kohana, wenn die Bindestrich-Zeichen in sich ist?
Frage
Kohana setzt automatisch URLs wie so nach oben
http://www.example.com/controller/method/argument1 / argument2 / etc
Jetzt möchte ich den Strich verwenden, um meine Worte in der URL zu trennen, und ich habe eine Adresse wie so
http://www.example.com/business-hub
Meine Controller BusinessHub_Controller betitelt. Was mich nervt ist, ist für / Business-Hub / zu den BusinesHub Controller übereinstimmen, ich brauche einen benutzerdefinierten Eintrag in die routes.php unter Anwendung / config Ordner hinzuzufügen. Es scheint auch, muss ich eine Beurteilung schreiben für alle Methode, die wirklich ärgerlich ist. Zum Beispiel, hier ist ein Auszug,
$config['business-hub'] = 'businesshub/index/';
$config['business-hub/logout'] = 'businesshub/logout';
$config['business-hub/media-releases'] = 'businesshub/mediareleases';
Offensichtlich ist dies wirklich ärgerlich. Gibt es trotzdem kann ich Kohana sagen die URL in das camelcase Namen, so etwas wie
konvertieren$urlController = 'business-hub';
$correctController = str_replace('-', ' ', $urlController);
$correctController = ucwords($correctController);
$correctController = str_replace(' ', null, $correctController);
$correctController = $correctController . '_Controller';
Lösung
Anstatt nur Striche Strippen, würde ich sie zu Unterstrichen konvertiert; und ich würde es tun einen Haken verwenden. Stellen Sie sicher, Haken in config / config.php aktiviert und dann eine Datei in Haken genannt erstellen, sagen wir, dashes_to_underscores.php:
function convert_dashes_to_underscores_in_url()
{
Router::$current_uri = str_replace('-', '_', Router::$current_uri);
}
Event::add_before(
'system.routing',
array('Router', 'setup'),
'convert_dashes_to_underscores_in_url');
Andere Tipps
Für die Variante camelcase Ich weiß nicht, aber so etwas wie dies funktionieren soll
$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';
Da die Strecke Teil in kohana ein regulärer Ausdruck ist.
Natürlich ist das von Ihnen an den dafür vorgesehenen Fällen severly begrenzt ist.