1

je exemple suivant 2 Running a Zend Framework action from command line et je frappe une erreur fatalefonction Bootstrap _initRouter() brise mes itinéraires personnalisés

Fatal error: Zend_Controller_Router_Exception: Route logout is not defined 

avec un itinéraire personnalisé et navigation que je définis dans application.ini comme

resources.router.routes.logout.route = logout 
resources.router.routes.logout.defaults.controller = authentication  
resources.router.routes.logout.defaults.action = logout 
resources.navigation.pages.logout.label = "Logout" 
resources.navigation.pages.logout.controller = "authentication" 
resources.navigation.pages.logout.action = "logout" 
resources.navigation.pages.logout.route = "logout" 
resources.navigation.pages.logout.resource = "logout" 

Je l'ai réduit la cause de l'erreur vers le bas à cette fonction bootstrap:

protected function _initRouter() 
{ 
    if (PHP_SAPI == 'cli') { 
     $this->bootstrap ('frontcontroller'); 
     $front = $this->getResource('frontcontroller'); 
     require_once APPLICATION_PATH. '/router/Cli.php'; 
     $front->setRouter (new Application_Router_Cli()); 
     $front->setRequest (new Zend_Controller_Request_Simple()); 
    } 
} 

W Que fais-je mal ici? L'erreur n'est présente que si vous n'utilisez pas CLI (et si je supprime le _initRouter() cela fonctionne comme prévu).

Répondre

5

La syntaxe resources.router dans votre fichier application.ini sert à configurer la ressource "routeur". L'existence d'une méthode appelée "_initRouter()" dans votre bootstrap configure également une ressource appelée "routeur". Je pense que ce conflit est à l'origine de votre problème, car seul l'un d'entre eux sera exécuté (je ne me souviens plus lequel a la priorité).

Je suggère de renommer votre méthode à quelque chose comme _initCliRouter().

Questions connexes