Application.ini中的Zend Regex路由无法识别

时间:2014-02-13 02:39:46

标签: regex zend-framework url-routing zend-router

过去2小时我一直在努力解决这个问题。我正在尝试将一个正则表达式路由添加到我的Zend Framework(V1)应用程序中。我的其他路由是静态的并存储在我的application.ini文件中,这就是我想要放置一些新的正则表达式路由的地方。

在我继续研究更复杂的正则表达式路由之前,我开始将以下(工作)路由转换为正则表达式路由:

resources.router.routes.shift-display.route = /shift/display/:id
resources.router.routes.shift-display.defaults.module = shift
resources.router.routes.shift-display.defaults.controller = index
resources.router.routes.shift-display.defaults.action = display

以下是我的想法:

resources.router.routes.shift-display.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.shift-display.regex = "shift/display/(\d+)"
resources.router.routes.shift-display.defaults.module = shift
resources.router.routes.shift-display.defaults.controller = index
resources.router.routes.shift-display.defaults.action = display
resources.router.routes.shift-display.map.1 = id
resources.router.routes.shift-display.reverse = "shift/display/%d"

但它不起作用。路由器似乎无法识别路由。试图打开时,例如vh.localhost/shift/display/7我得到“无效的控制器指定(显示)”,因此路由器使用默认路由。我还尝试用斜杠添加正则表达式路由。我尝试使用url-helper使用新的regex-route生成链接(带有传递的ID参数)并且它可以工作。

任何人都有线索?

1 个答案:

答案 0 :(得分:1)

有时它就是那么简单。在确定路线时,错误就在那条线上:

resources.router.routes.shift-display.regex = "shift/display/(\d+)"

必须是

resources.router.routes.shift-display.route = "shift/display/(\d+)"

4小时无所事事。但至少我终于找到了它; - )