Codeigniter-为索引变量保留URI段


Codeigniter - reserving URI segment for index variable

好的,

所以基本上我想做的是像这样路由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(,而不是变量。