2010-11-23 2 views
3

Je dois créer des routes spécifiques au module, mais sans mentionner explicitement le nom du module dans l'itinéraire. En ce moment j'ai un fichier de configuration séparé pour chaque module (MODULE/configs/module.ini) et dans le bootstrap de module je pousse ces routes dans Zend Framework. Le fichier INI contient des informations sur les routes mais mentionne le nom du module dans la route. par exemple.routes spécifiques au module dans Zend Framework sans spécifier le nom du module dans l'itinéraire

routes.contents.route = "Table des matières /(.*)"
routes.contents.defaults.module = Sommaire
routes.contents.defaults.controller = indice
routes.contents.defaults.action = index
+ autres détails concernant l'itinéraire.

Vous pouvez voir que le nom du module ("Contenu") est explicitement mentionné dans l'itinéraire. Ce que je veux, c'est que dans les routes, je mentionne juste la partie après le nom du module et il ajoute automatiquement le nom du module avant l'itinéraire. Donc plus tard, si je renomme le module pour dire CMS, je ne vais pas changer chaque route en "CMS/xxxx".

Répondre

0

La 'route' que vous spécifiez peut être ce que vous voulez. Si Zend Framework le correspond, il exécutera la route en fonction des valeurs par défaut définies ci-dessous.

resources.router.routes.products.regex = "somethingawesome/(.*)" 
resources.router.routes.products.defaults.module = "ModuleName" 
resources.router.routes.products.defaults.controller = "awesome" 
resources.router.routes.products.defaults.action = "cool" 

ci-dessus 'route' utilise le match regex pour - mysite.com/somethingawesome/whatever et acheminera au module: ModuleName, contrôleur AwesomeController.php et exécuter

le coolAction() Il Il y a beaucoup d'autres jeux que vous pouvez faire dans cette regex, mais la chaîne 'somethingawesome' vous appartient entièrement. Tout dépend de ce que vous voulez faire correspondre dans l'URL et de l'endroit où vous voulez l'envoyer.

+0

Je l'utilise, mais dans la plupart des modules, les routes commencent par le nom du module. somethingawesome = nom du module. donc je cherchais un moyen que je viens d'entrer dans la route après la barre oblique après "quelque chose de génial" et l'application ajoute automatiquement le nom du module (quelque chose de génial). Disons que mon nom de module est realestate, et je veux router realestate /(.*) vers module => realestate, controller => index, action => index et obtenir la valeur (. *) En utilisant getParam. Je veux seulement ajouter /(.*) dans la config d'itinéraire, donc si plus tard je renomme le module en "commercial" je ne ve pas pour changer tous les itinéraires. – Bryan

+0

Si vous voulez que "/ realestate" accède à un module appelé "somethingelse", il vous suffit de le changer dans la ligne de configuration '.module'. Le regex de route défini pour "/ realestate" ne devrait pas changer du tout. Si vous voulez que "/ realestate" soit "/" et allez à "somethingelse" changez les deux lignes. Je pense que vous devrez peut-être également désactiver les routes par défaut si vous voulez que "/ realestate" cesse de fonctionner lorsqu'il est configuré comme "/". –

+0

Maintenant que j'y pense, une route de "/(.*)" va tout intercepter et tous les autres modules/routes ne fonctionneront pas. Juste un heads-up. –

Questions connexes