Zend framework Zend framework不关心指定的自定义路由
我创建了一个路由器,并像这样添加到控制器中Zend framework Zend framework不关心指定的自定义路由,zend-framework,zend-route,zend-router,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_Co
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
,它采用标准路由,而不是新路由。我能想到的唯一一件事是,在使用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"
作为测试,我添加了上面的配置,并用这个listAction
创建了一个PageController
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"
}
@mrN我无法复制您的问题(请参阅我编辑的答案)。您是否定义了其他路线?是的,我也定义了其他路线,但我给每个路线分别命名,所以我认为它们不应该这样分类。@mrN您的路线顺序很可能是问题所在。您需要按照从最小到最具体的顺序定义它们。我会检查的,但是你能帮我吗。在…上