Codeigniter、Modular Extensionsを備えたモジュラー構造の場合、HMVCは頼りになるソリューションです。
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
あなたのセットアップのために、あなたはこれをあなたのconfig.php
:に追加するでしょう
$config['modules_locations'] = array(
// absolute path relative path
APPPATH.'3rd_party/application/' => '../../3rd_party/application/',
);
- / project_root /
- /システム
- / 3rd_party /
- / dists /
- /応用/
- tank_auth
- my_module
- some_other_third_party_code
- /応用/
- /サイト/
「相対パス」は、、、などのアプリケーションルート内の任意のサブディレクトリからの相対パスです。models
たとえば、CIでは、次を使用すると、「view」ディレクトリから「model」をロードできます。controllers
helpers
$this->load->model('../views/some_model');
...それはあなたが通常行うことではありません-しかし、これはHMVCのローダーがどのように機能するかです。HVMCを使用して、CIが通常できるものはすべて、「モジュール」ディレクトリからロードできます。必要な数の異なるモジュールまたはモジュールパスを持つことができます。
モジュールは、コントローラーをロードして、独自のミニアプリケーションのように動作させることができます(ただし、そうする必要はありません)。モジュール間で、またはデフォルトのアプリケーションルートから依存関係をロードすることもできます。モジュールと一緒にデフォルトのアプリケーションディレクトリを引き続き使用できます。モジュールパスから特定のアセットをロードすることを指定するには、パスにモジュール名を含めるだけです。
// Loads the "tank_auth" library (works from the tank_auth module)
$this->load->library('tank_auth');
// Loads the "tank_auth" library (works from anywhere in your application)
$this->load->library('tank_auth/tank_auth');
これは、モデル、ヘルパーなどでも機能します。
のコントローラーにアクセスするにtank_auth/controllers/login
は、URLを使用しますhttp://example.com/tank_auth/login
。このメソッドを使用して、別のコントローラー内でコントローラーを実行することもmodules::run()
できます。これにより、モジュールのコントローラーメソッドを、モジュールに触れることなく独自のロジックで「ラップ」できます。
class my_login extends MX_Controller {
function index() {
modules::run('tank_auth/login');
}
}
それはかなりよく文書化されており、何年も前から存在しています。私はこれまでに行ったほぼすべてのCodeigniterプロジェクトでHMVCを使用してきましたが、これを強くお勧めします。