编码器-路由到控制器,如果它存在,如果不使用默认


Codeigniter - routing to the controller if it exists, if not use dafault

所以我已经设置了我的路由如下:

$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";

我不能把它的功劳,因为我发现它在某个地方的博客,但我使用以下代码在我的路由。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文件的顶部,在这段代码之上。