我创建了一个路由器并像这样添加到控制器
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 :(得分: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"
}