Zend框架不关心指定的自定义路由

时间:2011-09-06 10:49:22

标签: zend-framework zend-route zend-router

我创建了一个路由器并像这样添加到控制器

public function _initRouting() {          
    // Get Front Controller Instance         
    $front = Zend_Controller_Front::getInstance();  
    // Get Router
    $router = $front -> getRouter();
    $routePage = new Zend_Controller_Router_Route('/page/:action/:cat/:parent/:id', array(
        'controller' => 'page',
        'action'    => 'list',
        'cat'       => 'general',
        'parent'    => '0',
        'module'    => 'default'
    ));
    $router -> addRoute('page', $routePage);
}

每当我导航到这个路由器时,这个路由器都没有做任何事情 /page/list/general/0/1,它采用标准路线,而不是新路线。

1 个答案:

答案 0 :(得分:0)

我唯一能想到的是前端控制器资源在你的init方法之前还没有被“引导”。

您至少应该引导并检索前端控制器资源

protected function _initRouting()
{
    $this->bootstrap('frontController');
    $front = $this->getResource('frontController');
    // etc

为什么不跳过创建bootstrap init方法并在应用程序配置中配置路由器资源?

resources.router.routes.page.route = "page/:action/:cat/:parent/:id"
resources.router.routes.page.defaults.module = "default"
resources.router.routes.page.defaults.controller = "page"
resources.router.routes.page.defaults.action = "list"
resources.router.routes.page.defaults.cat = "general"
resources.router.routes.page.defaults.parent = "0"

作为测试,我添加了上述配置并使用此PageController

创建了listAction
public function listAction()
{
    Zend_Debug::dump($this->getRequest()->getParams());
    exit;
}

调用page/list/general/0/1产生

array(6) {
  ["action"] => string(4) "list"
  ["cat"] => string(7) "general"
  ["parent"] => string(1) "0"
  ["id"] => string(1) "1"
  ["module"] => string(7) "default"
  ["controller"] => string(4) "page"
}