0

Codeigniter 2.0.1 を使用しています。たとえば私が電話すると..

http://localhost/index.php/admin/login ./controllers/admin/login.php

正常に動作しますが、管理ディレクトリ内のフォルダーで以下の URL を呼び出すと、404 エラーがスローされます。

http://localhost/index.php/admin/new_dir/dashboard ./controllers/admin/new_dir/dashboard.php

コントローラーは正しく配置され、名前が付けられています。なぜこれが起こっているのか、またはコントローラーがコントローラーディレクトリから1つの深さのディレクトリにしかならないのか誰かが知っていますか?

ありがとう

4

2 に答える 2

2

残念ながら、Codeigniterには1レベルのサブディレクトリしかありません。最初のURIセグメントのみが可能なディレクトリとしてチェックされます。

きちんと整理するために追加のサブディレクトリが必要ですか、それともURIの利益のためですか?後者の場合、ルートを使用して追加のサブディレクトリの動作をエミュレートできます。

于 2011-05-02T20:37:37.497 に答える
0

はい、アプリケーション/コントローラーにサブフォルダーを作成することは可能です。

  1. routes.php: $route['default_controller'] = "default_page";

  2. そのフォルダーのデフォルトとして使用する必要がある実際のコントローラーにリダイレクトするよりも、各サブフォルダーとコントローラーフォルダー自体に *default_page.php* を追加します。

    class Default_Page extends Public_Controller {

        public function __construct()
        {
            parent::__construct();
            redirect(Settings_model::$db_config['home_page']);
        }
    }
    
  3. 副作用: カスタム 404 ハンドラー (ある場合) がめちゃくちゃになります: サブフォルダーがキャッチされず、デフォルトの error_404 がスローされます。私はまだこれに対するまともな解決策を探しています。

欠点: 各フォルダーとサブフォルダーに、ほぼ同じコードを含む同様のファイルがあります。多くのフォルダーを含む大規模なプロジェクトがあるとします。これは維持するのが難しくなります (その時点で HMVC を使用する方が良いでしょう)。誰かがより良い解決策を持っていることを願っていますが、少なくともこれは機能します。

于 2011-08-29T19:11:48.900 に答える