Utilisation de Zend_Controller_Router_Route_Regex
Bonjour,
Je rencontre des difficultés dans la création de mon fichier INI pour mes routes,
je veux créer un premier groupe de route pour les pages "index*" (en français par exemple je veux "index-fr.html", par contre j'ai une rubrique "articles" où je veux pouvoir mettre n'importe quel type d'url ("monarticle.html"), et là je sèche dans les expressions régulières, voici ce que j'ai fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
routes.home.type = "Zend_Controller_Router_Route_Regex"
routes.home.route = "(index)*"
routes.home.defaults.module = "frontend"
routes.home.defaults.controller = "index"
routes.home.defaults.action = "index"
routes.home.map.1 = "myurl"
routes.home.reverse = "index%s"
routes.article.type = "Zend_Controller_Router_Route_Regex"
routes.article.route = "(\w)"
routes.article.defaults.module = "frontend"
routes.article.defaults.controller = "article"
routes.article.defaults.action = "index"
routes.article.map.1 = "myurl"
routes.article.reverse = "%s.html" |
mais j'ai des 404, d'avance merci pour votre aide.
Finalement je vais utiliser un autre procédé
Finalement je vais utiliser un autre procédé, je vais utiliser un Plugin :
En sachant que mes infos sont stockées en BD : pour chaque URL les infos de la route, du module, du controller, de l'action sont stockées.
Ainsi, je prends l'URL et je vais chercher les infos dans la BD et je les applique à la Route. Cela fonctionne parfaitement : le seul problème : lorsque je change de langue, mon "/fr" pose souci, ZF en fait un controller et me provoque une erreur 404, je n'arrive pas à trouver la solution.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
class Plugin_CustomRouter extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$urlPage = App_Tools::getCurrentUrl();
$mapper = new Frontend_Model_VinfospageMapper();
$maPage = $mapper->getPageByUrl($urlPage);
if($maPage){
if('frontend' == $maPage->getModule()){//Uniquement valable pour le Frontend
$maPageRoute = $maPage->getRoute();
if($maPageRoute){
$fc = Zend_Controller_Front::getInstance();
$router = $fc->getRouter();
$route = new Zend_Controller_Router_Route_Regex('[-\w]+)\.html?', array(
'module' => $maPage->getModule(),
'controller' => $maPage->getController(),
'action' => $maPage->getAction()
), array(
1 => 'myrurl'
), '%s.html');
$router->addRoute($maPageRoute, $route);
return $router;
}
}
}
}
} |