我应该在哪里定义ZF 1.10应用程序中的自定义路线?

时间:2010-04-17 15:53:15

标签: model-view-controller zend-framework routing

使用新的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

正如我所看到的那样,我可能做错了两件事 - 添加这些路线的错误位置,或者没有添加到正确的路由器。任何人都能指出我正确的方向吗?

2 个答案:

答案 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文件中的这个视图行为我完成了工作......