使用新的Zend_Application
/ Zend_Application_Bootstrap
类,我对应该在哪里应用自定义路由感到困惑。例如,目前我有一条路线:
protected function _initRouter() {
$router = new Zend_Controller_Router_Rewrite;
$route = new Zend_Controller_Router_Route('news/:id',
array('controller' => 'news', 'action' => 'view'));
$router->addRoute('postArchive', $route);
}
此方法位于我的Zend_Application_Bootstrap_Bootstrap
中并且肯定会运行。该路线也适用于$router
。
正如我所看到的那样,我可能做错了两件事 - 添加这些路线的错误位置,或者没有添加到正确的路由器。任何人都能指出我正确的方向吗?
答案 0 :(得分:2)
看起来你没有将路由器传递给前端控制器:
protected function _initRouter()
{
$this->bootstrap('frontController');
$front = Zend_Controller_Front::getInstance(); // from singleton, for example
$router = $front->getRouter();
$route = new Zend_Controller_Router_Route('news/:id',
array('controller' => 'news', 'action' => 'view'));
$router->addRoute('postArchive', $route);
return $router;
}
答案 1 :(得分:0)
resources.router.routes.www.type =“Zend_Controller_Router_Route_Hostname” resources.router.routes.www.route =“:module.domain.tld” resources.router.routes.www.defaults.module =“default” resources.router.routes.www.chains.index.type =“Zend_Controller_Router_Route” resources.router.routes.www.chains.index.route =“:controller /:action / *” resources.router.routes.www.chains.index.defaults.controller =“index” resources.router.routes.www.chains.index.defaults.action =“index”
bootstrap部分的application.ini文件中的这个视图行为我完成了工作......