好,
基本上我想做的就是像这样路由网址:
www.mypage.com/{controller}/[var1]/{any-function}
也就是说,应始终保留段2以将变量传递给索引,而后续任何段应该像往常一样调用这些函数。 我尝试过使用routes.php,但无法让它发挥作用。
我该如何处理?
编辑:
$route['(:any)'] = "site/$1";
$route['(:any)/(:any)'] = "site/$1/$1";
$route['(:any)/(:any)/(:any)'] = "site/$1/$1/$1";
$route['/(:any)/news'] = "site/index/news";
$route['12'] = 'site/index/$1/';
$route['47'] = 'site/index/$1/';
...
www.mypage.com/news
- 确实有效(调用函数)
www.mypage.com/12/
- 确实有效(将变量传递给索引)
www.mypage.com/12/news
- DOESN' T的工作目标是通过在单个网址中执行上述两个操作来使其工作。请注意,除了“新闻”之外,还有更多功能。所以,我们不要局限于此。
12
- 变量; news
- 现有和正常运作的职能。
答案 0 :(得分:0)
你在这里遇到的问题是(:any)
占位符是贪婪的,没有路由可以跳过它提到的一个。你应该始终保持通配符路由,并在第一时间使用特定的路由。
$route['12'] = 'site/index/$1/';
$route['47'] = 'site/index/$1/';
$route['/(:any)/news'] = "site/index/news";
$route['(:any)/(:any)/(:any)'] = "site/$1/$1/$1";
$route['(:any)/(:any)'] = "site/$1/$1";
$route['(:any)'] = "site/$1";
试试此订单。还docs。
答案 1 :(得分:0)
我最终在主控制器中创建了2个新函数(因为我只需要传递2个可能的变量),让它们称之为F1; F2,并相应地调用索引到
mywebsite.com/F1或F2 /索引或功能
允许我使用函数代替变量作为变通方法。所以在OP示例中,12
将是函数(F1或F2),而不是变量。