0

我一直在我的 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 中创建自己的设置,但没有奏效。我以前遇到过这个问题,但通常只是放弃并将事物分成不同的控制器,但我宁愿采取不同的行动。

任何帮助将非常感激。

马特

4

1 回答 1

0

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

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

于 2009-12-14T16:42:59.590 回答