我有一个ZF应用程序正在使用自定义路由到页面列表(比如一个位置列表),并且遇到问题要么了解路由请求值的工作原理,要么正则表达式使其工作。我希望http://domain.com/locations转到http://domain.com/location/list/page/1然后拥有以下内容(http://domain.com/locations/2 - &gt; http://domain.com/location/list/page/2等等。)。< / p>
问题在于识别空案例(即http://domain.com/locations)。
在我的routes.ini中,我有(这不起作用,但/ ^ [\ d] * $ /在一个简单的preg_match中工作):
routes.locations-page.route = locations/:page
routes.locations-page.defaults.controller = locations
routes.locations-page.defaults.action = list-new
;routes.locations-page.reqs.page = \d* - does not work
routes.locations-page.reqs.page = ^[\d]*$
什么样的reqex会在单个路径中捕获http://domain.com/locations,http://domain.com/locations/1和http://domain.com/locations/2场景?
THX
答案 0 :(得分:0)
由于网址结构不同,因此无法在同一规则中匹配网址http://domain.com/locations和http://domain.com/locations/2。但是你可以尝试以下方法来实现你想要做的事情。
在你的bootstrap文件中,
$r = new Zend_Controller_Router_Route_Regex('locations/(*)',
array('controller' => 'locations', 'action' => 'list-new'),
array(1 => 'locationID'));
$router->addRoute('add-location', $r);
您还可以使用首选的添加路线的方式。
在您的位置控制器中,
$locationID = $this->_getParam('locationID');
现在,根据此值,转发适当的操作。