2

所以我已经像这样设置了我的路线:

$route[':any'] = "main";
$route['products/(:any)'] = "products/product/$1";

例如www.mysite.com/something进入主控制器,我在那里处理"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";
4

1 回答 1

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 文件的顶部,在此代码上方。

于 2013-03-01T08:54:34.413 回答