Jon*_*eig 1 php bootstrapping zend-framework command-line-interface
我在命令行中运行Zend Framework操作时遵循示例2 ,我遇到了致命错误
Fatal error: Zend_Controller_Router_Exception: Route logout is not defined
Run Code Online (Sandbox Code Playgroud)
使用我在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"
Run Code Online (Sandbox Code Playgroud)
我已将错误原因缩小到此引导函数:
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 ());
}
}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?错误仅在不使用CLI时出现(如果我删除了_initRouter(),它将按预期工作).
resources.routerapplication.ini中的语法用于设置资源"router".在引导程序中存在一个名为"_initRouter()"的方法,也会设置一个名为"router"的资源.我认为这种冲突是导致你的问题的原因,因为只会运行其中一个(我不记得哪个优先).
我建议将你的方法重命名为_initCliRouter().