Zendframework路由问题

时间:2009-12-14 15:46:17

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

我一直在我的application.ini文件中设置我的路由,该文件适用于我已设置的所有路径。问题是当该控制器中有多个动作时,我尝试在其他动作中使用这些路径。

例如,我在application.ini中创建了以下内容,用于分页和列排序

resources.router.routes.search.route = "search/:page/:col/:sort/:limit/"
resources.router.routes.search.defaults.controller = search
resources.router.routes.search.defaults.page = 1
resources.router.routes.search.defaults.col = time
resources.router.routes.search.defaults.sort = default
resources.router.routes.search.defaults.limit = 50
resources.router.routes.search.reqs.page = \d+
resources.router.routes.search.reqs.col = \w+
resources.router.routes.search.reqs.sort = \w+
resources.router.routes.search.reqs.limit = \d+

当我使用该页面的默认操作

时,上述工作正常
www.mywebsite.com/search/2/

会显示结果的第二页。但如果我在另一个动作上尝试相同的话,

www.mywebsite.com/search/action/2

它只显示一个空白页面。我尝试在ini中创建自己的设置,但是没有用。我之前遇到过这个问题,但通常只是放弃并将事物分成不同的控制器,但我宁愿采取不同的行动。

非常感谢任何帮助。

马特

2 个答案:

答案 0 :(得分:0)

search/:page/:col/:sort/:limit/www.mywebsite.com/search/action/2不符。您的路线正在寻找search/后跟一个代表页码的数字(\d);但是,您要求search/后跟字符串action。我建议您在路线中添加另一个参数:search/:action/:page/:col/:sort/:limit,默认actionindex

请求默认操作的第一页保持不变(search)。请求默认路由的第2页现在为search/index/2/,但您现在可以指定其他操作(search/action/2)。

答案 1 :(得分:0)

原来我完全忘了为搜索词设置变量。当在新页面上时,它没有维护原始搜索词,并且我的代码正在执行它想要的操作,并且不显示任何输出。

对于那些认为他们遇到类似问题的人,他们可能会发现此链接非常有用。

link text