Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut à tous,
je souhaite modifier le router utilisé par Zend dans un plugin. Donc, dans mon plugin :
public function routeStartup(Zend_Controller_Request_Abstract $request) { $frontController = Zend_Controller_Front::getInstance(); $frontController->setRouter($oRouter); }
(en réalité, c'est un peu plus que ça car c'est dépendant de la config)
Mais ça ne marche pas car dans le fichier Zend/Controller/Front.php, à la ligne 854 :
/** * Initialize router */ $router = $this->getRouter(); $router->setParams($this->getParams()); /** * Initialize dispatcher */ $dispatcher = $this->getDispatcher(); $dispatcher->setParams($this->getParams()) ->setResponse($this->_response); // Begin dispatch try { /** * Route request to controller/action, if a router is provided */ /** * Notify plugins of router startup */ $this->_plugins->routeStartup($this->_request); $router->route($this->_request);
On voit que le routeur est obtenu avant l'appelle à routeStartup donc la modification faite dans le plugin n'est pas prise en compte. Puisqu'il n'y a aucun impact à déplacer le getRouter après le routeStartup, j'aimerais proposé un patch mais nouveau dans la communauté, je préfère demander votre avis ici avant.
Pensez vous que je suis dans l'erreur ?
PS : je part en vacance ce soir et je n'aurais pas de connexion donc ne vous etonnez pas si je ne répond pas après 20h, retour dans 1 semaine.
Hors ligne
aide toi de ce schama :
http://www.kitpages.fr/cms/site/tutoria … lobale.jpg
Si tu veux changé le router, fait le dans ton bootstrap
Si tu veux modifier son comportement c'est dans rootstartup
Mais, rien ne t'empêche à mon avis de faire dans ton plugin:
Zend_Controller_Front::getInstance()->setRouter($myrouter);
Hors ligne
ondex>> Ton idée est intéréssante, un patch non, mais un improvement oui, je l'ai posté là : http://framework.zend.com/issues/browse/ZF-4106
Hors ligne