1

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

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,它都会采用标准路线,而不是新路线。

4

1 回答 1

0

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

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

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

为什么不跳过创建引导初始化方法并在应用程序配置中配置路由器资源?

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"
}
于 2011-09-06T12:21:36.780 回答