Existe-t-il un moyen générique d'acheminer les URL dans Kohana lorsqu'il contient le trait d'union?

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

  •  05-07-2019
  •  | 
  •  

Question

Kohana configure automatiquement les URL de la même manière

http://www.example.com/controller/method/argument1 / argument2 / etc

Maintenant, j'aime bien utiliser le tiret pour séparer mes mots dans l'URL et j'ai une adresse comme celle-ci

http://www.example.com/business-hub

Mon contrôleur s'appelle BusinessHub_Controller. Ce qui me gêne, c’est que / business-hub / corresponde au contrôleur BusinesHub, j’ai besoin d’ajouter une entrée personnalisée dans le fichier routes.php du dossier application / config. Il semble également que je dois en ajouter une pour chaque méthode , ce qui est vraiment ennuyeux. Par exemple, voici un extrait,

$config['business-hub'] = 'businesshub/index/';

$config['business-hub/logout'] = 'businesshub/logout';

$config['business-hub/media-releases'] = 'businesshub/mediareleases';

Évidemment, c'est vraiment ennuyant. Est-ce que je peux dire à Kohana de convertir l'URL dans le nom camelCase, quelque chose comme

$urlController = 'business-hub';

$correctController = str_replace('-', ' ', $urlController);

$correctController = ucwords($correctController);

$correctController = str_replace(' ', null, $correctController);

$correctController = $correctController . '_Controller';
Était-ce utile?

La solution

Plutôt que d'éliminer les tirets, je les convertissais en caractères de soulignement. et je le ferais avec un crochet. Assurez-vous que les hooks sont activés dans config / config.php, puis créez un fichier appelé, par exemple, 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');

Autres conseils

Pour la variante camelCase, je ne sais pas, mais quelque chose comme cela devrait fonctionner

$config['(a-z)+-?(a-z)*/(a-z)+-?(a-z)*'] = '$1$2/$3$4';

Comme la partie route de kohana est une expression régulière.

Bien sûr, cela est strictement limité aux cas que vous avez fournis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top