2011-09-14 61 views
1

我以下在Running a Zend Framework action from command line例2我的定制路由和我打一个致命的错误自举功能_initRouter()打破

Fatal error: Zend_Controller_Router_Exception: Route logout is not defined 

与自定义路线和导航我在的application.ini定义为

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" 

我已经收窄了错误的原因下降到自举功能:

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 ^我在这里做错了什么?该错误仅在不使用CLI时出现(并且如果我删除_initRouter(),它按预期工作)。

回答

5

您的application.ini中的语法resources.router用于设置资源“路由器”。在引导程序中存在名为“_initRouter()”的方法也会设置一个名为“router”的资源。我认为这种冲突是导致你的问题的原因,因为只有其中一个会运行(我不记得哪个优先)。

我建议将您的方法重命名为_initCliRouter()