5

wiredesignz で HMVC をインストールしましたが、からのルートapplication/modules/xxx/config/routes.phpがまったく認識されませんでした。次に例を示します。

application/modules/pages/config/routes.php私は持っています:

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

URL を入力しdomain.com/admin/pages/createても機能せず、CI 404 Page not found が表示されます。ルートを移動すると、application/config/routes.php問題なく動作します。

すべての管理ルートを main に配置せずに機能させるにはどうすればよいroutes.phpですか?

Web を 4 時間以上検索しましたが、この問題に関する回答は見つかりませんでした。from モジュールがロードされており、正常に機能しているかどうかは既に確認routes.phpしましたが、中に入れたルートは機能しません。

4

3 に答える 3

7

モジュールからのルートを正常に機能させる方法を見つけました。これが理想的な解決策かどうかはわかりませんが、これまでのところ正常に機能しています。

アプリケーション/config/routes.phpを開き、$ route ['404_override']=''の下にあります。次のコードを追加します。

$modules_path = APPPATH.'modules/';     
$modules = scandir($modules_path);

foreach($modules as $module)
{
    if($module === '.' || $module === '..') continue;
    if(is_dir($modules_path) . '/' . $module)
    {
        $routes_path = $modules_path . $module . '/config/routes.php';
        if(file_exists($routes_path))
        {
            require($routes_path);
        }
        else
        {
            continue;
        }
    }
}

次の解決策は、configフォルダーまたはroutes.phpがモジュールフォルダーにない場合でも正常に機能します

于 2013-01-14T14:05:04.313 に答える
2

routes.phpモジュールは、そのモジュールが「呼び出された」ときにのみロードされます。そうでない場合、CIは、各要求を処理するために、すべてのモジュールからすべてのルート構成をロードする必要がありますこれは発生しません)。

これを機能させるには、メインアプリケーションを使用する必要がありますroutes.php。URLでセグメントを使用していないpagesため、そのモジュールのルーティングが読み込まれることはありません。

それはあなたが避けたかったことだと私は知っていますが、残念ながら、あなたが「ハッキー」になりたくない限り、それは不可能です。


admin/moduleリクエストをにマップするために使用するルーティングは次のmodule/adminとおりです。おそらくそれを使用できます。

// application/config/routes.php
$route['admin']                     = "dashboard/admin"; // dashboard is a module
$route['admin/([a-zA-Z_-]+)/(:any)'] = "$1/admin/$2";
$route['admin/([a-zA-Z_-]+)']        = "$1/admin/index";
$route['(:any)/admin']               = "admin/$1";
于 2013-01-07T17:26:25.560 に答える