2012-01-27 9 views
3

cakephpで3つのモジュールを用意する必要があります。 1つはadmin、hotel admin、guestです。これらの3つは同じログイン画面を持つ異なる種類のユーザーですが、内部レイアウトは完全に分離されています。cakephpアプリケーションの複数のモジュール

3つのappフォルダのような3つのフォルダ構造をそれぞれ別々に持つことができますか、これらのユーザーにはルーティングを使用する必要があります(コントローラが混在するため操作が難しいです)。

+2

使用ルーティング。なぜこれらの混合コントローラは操作が難しいでしょうか? admin_index()、hotel_admin_index()、guest_index()などのアクションのリストがあります。 – Joep

答えて

4

モジュールを「プラグイン」として作成すると、モデル、ビュー、コントローラが別々になります。プラグインのデフォルトのルーティングは、/plugin_name/controller_name/actionからアクセスできるということです。プラグインは独自のレイアウトを持つことさえできます。あなたのケースの主なアプリケーションは、ユーザーの認証とアクセス許可の確認に減らされます。

さらに詳しい情報:
1.3:http://book.cakephp.org/1.3/en/view/1111/Plugins
2.0:http://book.cakephp.org/2.0/en/plugins.html

三つのモジュールは基本的に同じコントローラとモデルを持っていた場合、私は唯一のルーティング使用します。

+0

返信ありがとうございます。すべてのモジュール/プラグインで同じモデルを使用したい場合 – phpian

+0

メインアプリケーションでモデルを定義し、プラグインからモデルを使用します。 – Joni

1

複数のプレフィックスルーティングを組み合わせてlayoutsにすると、問題が解決するはずです。コメントでJoepが述べたように、コントローラ内のアクションは簡単な名前付け方式admin_index(), hotel_admin_index() and guest_index()に従うので、コードを簡単に整理できます。

AppControllerで次のコードを使用すると、レイアウトの切り替え(default.ctp、admin.ctp、hotel_admin.ctpなど)を処理できます。

function beforeRender() { 
    if (isset($this->params['prefix']) { 
    if ($this->params['prefix'] == 'admin') { 
     $this->layout = 'admin'; 
    } else if ($this->params['prefix'] == 'hotel_admin') 
     $this->layout = 'hotel_admin'; 
    } 
    } 
} 

あなたも、さらに一歩それを取ると、すべての静的リソースを分離することができます(つまり/img/admin/new-blah.png)

関連する問題