web-dev-qa-db-ja.com

Codeigniter HMVCを適切に使用する方法

Codeigniterに modular extension を適切に使用する方法について頭を悩ませるのに問題があります。私が理解している限りでは、モジュールは互いに完全に独立している必要があるので、1つのモジュールで作業でき、チームメイトがどのモジュールで作業しているかについて心配する必要はありません。私は自分のサイトのフロントエンドとバックエンドを構築していますが、アプリケーションをどのように構成するべきかについて混乱しています。

私の質問の最初の部分は、アプリのルートコントローラーを使用してモジュールを実行する必要がありますか、それともユーザーがURLで直接モジュールにアクセスする必要がありますか? IE:私のwelcome.php

public function index()
{
  $this->data['blog'] = Modules::run( 'blog' );
  $this->data['main'] = Modules::run( 'random_image' );
  $this->load->view('v_template', $this->data);
}

public function calendar()
{
  $this->data['blog'] = Modules::run( 'blog' );
  $this->data['main'] = Modules::run( 'calendar' );
  $this->load->view('v_template', $this->data);
}

質問の2番目の部分は、フロント/バックエンドモジュールフォルダーを個別に作成する必要があるかどうかです。

-config
-controllers
  welcome.php
  -admin
    admin.php
-core
-helpers
-hooks
-language
-libraries
-models
-modules-back
  -dashboard
  -logged_in
  -login
  -register
  -upload_images
  -delete_images
-modules-front
  -blog
  -calendar
  -random_image
  -search
-views
  v_template.php
  -admin
    av_template.php

どんな助けでも大歓迎です。

8

私がしていることを共有するだけです。

ユーザーにモジュールに直接アクセスさせる。モジュール内のモジュールのバックエンドとフロントエンドの両方に個別のコントローラーがあります。

すべてのバックエンドコントローラーはAdmin_Controllerを拡張し、フロントエンドコントローラーはFront_Controllerを拡張します。

管理ページはモジュール自体によってレンダリングされます(管理領域/フロントエリアのマスターテンプレートがあり、モジュールはテンプレートのメインの作業領域を埋めます)。

すべてのリクエストはモジュール自体によって処理されます。

このようにして、バックエンドとフロントエンドの両方がモジュール自体によってのみ処理されます。

私のフォルダ構造はあなたのものと少し異なります:

+application
|--+modules
   |--+content
      |--+controllers
      |  |--+admin
      |     |--Content_Controller.php (This handles the backend requests)
      |  |--Content_Controller.php (This handles the frontend requests)
      |--models
      |--+views
      |  |--+admin (this contains the views for backend)
      |  |--+front (this contains views for front end)

したがって、コンテンツモジュールを削除する必要がある場合は、モジュールディレクトリからフォルダを削除するだけです。 :)

3
Broncha