好的,
所以基本上我想做的是像这样路由url:
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
-不起作用,目标是通过在单数url中执行以上两个操作来使其起作用。请注意,除了"新闻",还有更多的功能,所以我们不要局限于此。
12
-变量;news
——现有和工作功能。
这里的问题是(: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";
试试这个订单。还有文档。
我最终在主控制器中创建了两个新函数(因为我只需要传递两个可能的变量(,让我们称它们为F1;F2,并相应地调用索引到
mywebsite.com/F1或F2/索引或功能
允许我用函数代替vars作为一种变通方法。所以在OP示例中,12
将是函数(F1或F2(,而不是变量。