ZF1 Zend_Controller_Router_Route可选段

时间:2013-10-31 13:12:46

标签: php zend-framework zend-router zend-framework-routing

我在使用Zend_Controller_Router_Route时遇到了一些问题。 我在标准模块/控制器/动作表示法中有以下URL:

http://www.mysite.com/rent/index/region/myregion/town/mytown/district/mydistrict/filter_params/filter_values

模块:租金 controller:index

params:地区,城镇,区

filter_params是一些更多的分页参数和深入的东西

我想将其剥离为: http://www.mysite.com/rent/myregion/mytown/mydistrict/filter_params/filter_values/

但这些也应该有用

http://www.mysite.com/rent/myregion/mytown/filter_params/filter_values

http://www.mysite.com/rent/myregion/filter_params/filter_values

我试过这条路线

$myRoute = new Zend_Controller_Router_Route(
    'rent/:region/:town/:district/*',
     array(
         'controller' => 'rent',
         'action' => 'index'
     )
);
$router->addRoute('rent', $myRoute);

这个有效: http://www.mysite.com/rent/myregion/mytown/mydistrict

这些失败

http://www.mysite.com/rent/myregion/mytown

http://www.mysite.com/rent/myregion

Action 'myregion' does not exist and was not trappend in __call()

当我有http://www.mysite.com/rent/myregion/mytown/filter_params/filter_values

这样的路线时,如何宣布其他路线以及所有其他参数会发生什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是因为您添加了与rent/:region/:town/:district/匹配的路由,而其他两个条件与此规则不匹配。您需要为

创建路线

rent/:region/ rent/:town/

等。你可以这样做,但有问题如何知道param是城镇或地区,但可以通过添加区域和城镇到数据库并查找它们或通过添加一些额外的参数和使用正则表达式来检查。

相关问题