我正在使用 codeigniter 构建一个教程系统,并希望实现以下 URL 结构:
- /tutorials --> 包含所有类别列表的介绍页面
- /tutorials/{a category as string} --> 这将给出给定类别的教程列表,例如/教程/php
- /tutorials/{a category as string}/{an ID}/{tutorial slug} --> 这将显示教程,例如/tutorials/php/123/how-to-use-functions
- /tutorials/add --> 添加新教程的页面
问题是,当我想使用前两种类型的 URL 时,我需要将参数传递给 Controller 的索引函数。第一个参数是可选的类别,第二个是可选的教程 ID。我在发布之前做了一些研究,所以我发现我可以添加一条像 tutorials/(:any)
这样的路线,但问题是这条路线会通过 add
在使用最后一个 URL (/tutorials/add) 时也作为参数。
我有什么想法可以实现这一目标吗?
最佳答案
您的路由规则可以按以下顺序:
$route['tutorials/add'] = "tutorials/add"; //assuming you have an add() method
$route['tutorials/(:any)'] = "tutorials/index"; //this will comply with anything which is not tutorials/add
然后在 Controller 的 index() 方法中,您应该能够确定传递的是类别 ID 还是教程 ID!
关于php - Codeigniter 将参数传递给 Controller 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074993/