0

我正在使用 codeigniter 框架,默认情况下我加载我的站点控制器

$route['default_controller'] = "site";

但是现在我想设置 routes.php 配置,这样我仍然可以像以前一样访问我的控制器,但是如果控制器不存在,那么我想运行用户控制器并检查它是否是昵称,以便我可以显示该用户配置文件。

就像在 Facebook 上一样,您可以在其中拥有www.facebook.com/username它并将您带到您的用户个人资料。但我希望我的其他控制器仍然可以访问www.mysite.com/sitewww.mysite.com/site/function等等

我曾尝试使用 :any 通配符,但无法正常工作。我已经看到有些人用正则表达式解决了这个问题,但我不擅长正则表达式,也不知道如何把它放在一起,所以它对我有用。

4

2 回答 2

2

试试我的方法:

首先,$route为您拥有的每个控制器设置,例如:

$route['controller_1'] = 'controller_1';
$route['controller_1/(:any)'] = 'controller_1/$1'; //this let you access your method
$route['controller_2'] = 'controller_2';
$route['controller_2/(:any)'] = 'controller_2/$1'; //this let you access your method

接下来,使用:any

$route['(:any)'] = 'user_controller/$1';

祝你好运 !!!

于 2013-04-02T12:45:04.453 回答
0

试试这个方法。如果你有很多控制器,它会减少很多重复的行,但我不知道它是否违反任何 CI 规则。

//this code block should be placed after any kind of reserved routes config
$url_parts = explode('/',strtolower( $_SERVER['REQUEST_URI']) );
$reserved_routes = array("controller_1", "controller_2", "controller_3" );
if (!in_array($url_parts[1], $reserved_routes)) {    
    $route['([a-zA-Z0-9_-]+)'] = "controller_1/profile/$1";
}
于 2013-08-21T21:15:55.460 回答