我的Codeigniter应用程序中有很多控制器,例如:Signup,Profile,Main等。
现在我想构建“用户”控制器。
我想要的是什么:
我在 config / routes.php 中创建了这个:
$route['(:any)'] = "user";
但它覆盖了我的应用中“用户”控制器的所有路线。
是否有任何简单的Codeigniter路由不会覆盖其他控制器路由?
更新---
我有这个问题的简单正则表达式,来自:Daniel Errante's Blog
$route['^(?!ezstore|ezsell|login).*'] = “home/$0″;
其中ezstore,ezsell和login是您的应用程序中控制器的名称。
答案 0 :(得分:5)
您也可以使用foreach语句。这样你就可以把你的控制器放在一个很好的清单中。
$controller_list = array('auth','dashboard','login','50_other_controllers');
foreach($controller_list as $controller_name)
{
$route[$controller_item] = $controller_name;
}
$route['(:any)'] = "user/display/$1";
答案 1 :(得分:3)
您将必须明确定义所有这些路线。否则,您将始终以“user_controller”结束。
$route['signup'] = "signup";
$route['(:any)'] = "user/display/$1";
或类似的东西。它们是按顺序运行的,所以首先定义的是,它将首先发生。因此,如果你抓住(:any),你将把任何东西发送给那个控制器。
另请注意,您可以使用正则表达式,因此如果您知道总会有“。”在那里,你可以测试一下。