Zend Router - 带或不带参数的URL是两条不同的路由

时间:2013-01-06 00:13:48

标签: php zend-framework zend-route

我目前正在使用Zend Framework创建我的网站的新版本,我遇到了一些我过去看到过的问题。

有我的路线:(一部分)

// BLOG -> CATEGORIES
$route = new Zend_Controller_Router_Route(
    'blog/categories',
    array(
        'module'     => 'blog',
        'controller' => 'categories',
        'action'     => 'index'
    )
);
$router->addRoute('blog-categories', $route);

// BLOG -> CATEGORIES -> LIST ARTICLES (:alias = name of the category)
$route = new Zend_Controller_Router_Route(
    'blog/categories/:alias',
    array(
        'module'     => 'blog',
        'controller' => 'categories',
        'action'     => 'list',
        'alias'      => null
    )
);
$router->addRoute('blog-categories-list', $route);

问题是:当我转到/blog/categories/时,它会给我list行动。我不想要的。我需要index

有没有办法解决这个问题而不使用例如/blog/categories/view/:alias

注意:我对/blog/(列出所有文章)和/blog/:alias/(显示单篇文章)也有同样的问题。

1 个答案:

答案 0 :(得分:1)

通过包含'alias' => null,您要为:alias参数指定默认值,如果它不在URL中,则使用该参数。这就是你的第二条路线始终匹配的原因。删除它,它应该按照你想要的那样工作。