2

在过去的 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 参数),它可以工作。

有人有线索吗?

4

1 回答 1

1

有时候就是这么简单。在定义路线时,该行出现了错误:

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

它一定要是

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

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

于 2014-02-13T15:16:53.133 回答