2011-09-14 60 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()