我一直在我的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中创建自己的设置,但是没有用。我之前遇到过这个问题,但通常只是放弃并将事物分成不同的控制器,但我宁愿采取不同的行动。
非常感谢任何帮助。
马特
答案 0 :(得分:0)
search/:page/:col/:sort/:limit/
与www.mywebsite.com/search/action/2
不符。您的路线正在寻找search/
后跟一个代表页码的数字(\d
);但是,您要求search/
后跟字符串action
。我建议您在路线中添加另一个参数:search/:action/:page/:col/:sort/:limit
,默认action
到index
。
请求默认操作的第一页保持不变(search
)。请求默认路由的第2页现在为search/index/2/
,但您现在可以指定其他操作(search/action/2
)。
答案 1 :(得分:0)
原来我完全忘了为搜索词设置变量。当在新页面上时,它没有维护原始搜索词,并且我的代码正在执行它想要的操作,并且不显示任何输出。
对于那些认为他们遇到类似问题的人,他们可能会发现此链接非常有用。