Gibt es eine generische Art und Weise zu routen URLs in Kohana, wenn die Bindestrich-Zeichen in sich ist?

StackOverflow https://stackoverflow.com/questions/1004716

  •  05-07-2019
  •  | 
  •  

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';
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top