2

だから私は自分のルートを次のように設定しました:

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

たとえば、www.mysite.com/somethingはメイン コントローラーに移動し、そこで"something"を処理します。私が扱っている商品も同様です。

しかし、後でわかるように、メインコントローラーの代わりに使用したいメソッドを含む他のすべてのコントローラーを書き留める必要があります。コントローラーが存在するかどうかを自動的に検出し、デフォルトの「メイン」ではなくコントローラーを使用する方法はありますか?

$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 に答える