带标准路由器的多个路由(Zend Framework)

时间:2012-06-04 12:28:14

标签: zend-framework rewrite router

我试图在zend中设置多个到同一个控制器的路由:

URL                                            | Controller::Action
=================================================================================
http://mysite/tasks/:level/                    | Objectives::Objectives
http://mysite/tasks/:level/:objective/         | Objectives::tasks
http://mysite/tasks/:level/:objective/:taskID/ | Objectives::view

我尝试了以下内容:

<?php
$router->addRoute('objectives', new Zend_Controller_Router_Route(
    'task/:level/:objective/:taskID/',
    array(
        'controller' => 'objectives',
        'action'     => 'view'
    )
));
$router->addRoute('objectives', new Zend_Controller_Router_Route(
    'task/:level/:objective/',
    array(
        'controller' => 'objectives',
        'action'     => 'tasks'
    )
));
$router->addRoute('objectives', new Zend_Controller_Router_Route(
    'task/:level/',
    array(
        'controller' => 'objectives',
        'action'     => 'tasks'
    )
));
?>

然而,最后一条规则似乎覆盖了路由器中的先前规则..我已经一遍又一遍地阅读了路由器的Zend文档,我感觉我只是缺少一些东西 - 我应该使用不同的路由器类吗?

任何帮助都得到了很多赞赏

1 个答案:

答案 0 :(得分:0)

怀疑我覆盖了以前的规则。 addRoute()的第一个参数是路由的名称,而不是您按照我的想法路由到的控制器。给每条路线一个唯一的名称可以解决问题。