所以我设置了这样的路线:
$route[':any'] = "main";
$route['products/(:any)'] = "products/product/$1";
例如 www.mysite.com/something 进入主控制器,在那里我处理“某事”。 我用同样的方式处理产品。
但是正如你所看到的那样,我必须用我想要使用的方法而不是主控制器写下所有其他控制器。有没有办法让它自动检测控制器是否存在使用控制器而不是默认的“main”?
$route['products'] = "products";
$route['admin/user/login'] = "admin/user/login";
$route['admin/user/logout'] = "admin/user/logout";
$route['admin/migrations'] = "admin/migrations";
$route['admin/dashboard'] = "admin/dashboard";
答案 0 :(得分:4)
我不能因为我在某个博客上找到它而得到任何赞誉,但是我在routes.php中使用了以下代码,在你的情况下我将它置于$route[':any'] = "main";
$controller_dir = opendir(APPPATH."controllers");
while (($file = readdir($controller_dir)) !== false) {
if (substr($file, -4) == ".php" ) {
$route[substr($file, 0, -4)."(.*)"] = substr($file, 0, -4)."$1";
} elseif (substr($file, -5) == ".php/") {
$route[substr($file, 0, -5)."(.*)"] = substr($file, 0, -5)."$1";
}
}
我是否需要覆盖它们中的任何一个,或者有任何唯一的路由,我将它们放在routes.php文件的顶部,在此代码上方。