ZF1 Zend_Controller_Router_Route optional segments


ZF1 Zend_Controller_Router_Route optional segments

我对Zend_Controller_Router_Route有一些问题。我在标准模块/控制器/操作表示法中有以下网址:

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

模块:租金控制器:索引

参数:地区、城镇、地区

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 的路由时,我如何声明其他路由以及所有其他参数会发生什么

感谢您的帮助!

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

rent/:region/ rent/:town/

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