2009-06-17 7 views
0

Kohana configure automatiquement les URL comme siExiste-t-il un moyen générique d'acheminer les URL dans Kohana lorsqu'il y a le trait d'union?

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

Maintenant, je tiens à utiliser le tableau de bord pour séparer mes mots dans l'URL, et j'ai une adresse comme si

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

Mon Le contrôleur est intitulé BusinessHub_Controller. Ce qui m'énerve, c'est que/business-hub/pour faire correspondre le contrôleur BusinesHub, j'ai besoin d'ajouter une entrée personnalisée dans le fichier routes.php sous le dossier application/config. Il semble également que je dois ajouter un 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'; 

De toute évidence, cela est vraiment ennuyeux. Est-ce là, je peux quand même dire Kohana pour convertir l'URL dans le nom de camelCase, quelque chose comme

$urlController = 'business-hub'; 

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

$correctController = ucwords($correctController); 

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

$correctController = $correctController . '_Controller'; 

Répondre

2

Plutôt que de supprimer les tirets, je les convertis en traits de soulignement; et je le ferais en utilisant un crochet. Assurez-vous que les crochets sont activés dans config/config.php puis créer un fichier dans des crochets appelés, 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'); 
+0

Cela semble prometteur! J'ai déjà un crochet 404 et un crochet de contrôleur par défaut, donc l'implémentation devrait être un jeu d'enfant. – alex

+0

A travaillé super - vous êtes l'homme! – alex

0

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 route part dans kohana est une expression régulière.

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