2011-09-06 70 views
1

我创建了一个路由器,并加入到这样Zend框架并不关心定义路由指定

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

回答

0

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

你至少应该引导和检索前端控制器资源

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

你为什么不只是跳过创建一个引导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" 

作为测试,我添加了上述的配置以及与此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" 
} 
+0

试图创建一个PageController太,仍然发生.. – mrN

+0

@mrN我无法复制您的问题(请参阅我编辑的答案)。你有没有定义其他路线? – Phil

+0

是的,我也有其他路线定义,但我给每个路线分开的名称,所以我不认为他们应该这样上课。 – mrN