1

私はCodeIgniterを使用していますが、質問はどのMVCフレームワークにも当てはまります。私は5つの異なるウェブサイトの管理を可能にするカスタムCMSを持っています。ユーザーはログインして、これらのサイトを切り替えます。彼らはサイトの各領域にコンテンツを追加することができます。入力できるCMSとデータは、各サイトで同じです。同じデータに対して複数のビューを実装するためのアイデア

公開されているサイトはすべて、他のブランドと同じデータを含んでいるにもかかわらず、まったく違って見え、異なるブランドを表します。

これらのビューを実装するにはどうしたらいいですか?私が見なければならないデザインパターンはありますか?

ここで私が考えることができる唯一の方法は、switch文を各コントローラの中に入れて、各Webサイトごとに異なるビューを取得することですが、これを行うもっと巧妙な方法が必要です。

class Home extends Controller { 

    public function getPage() 
    { 
     $website = $this->session->userdata("site_id"); 
     switch($website) 
     { 
      case "1": 
       // load view one 
      break; 
      case "2": 
       // load view 2 
      break; 
      // etc etc 
     } 
    } 
} 

答えて

1
  • は、他のすべてのコントローラがあなたのケースHomeには、CoreControllerクラスを拡張Controllerを拡張CoreControllerクラスを記述してあります:

    私はこのようなコードの負荷を生成周りを取得取得したいです
    class CoreController extends Controller {} 
    class Home extends CoreController {} 
    
  • site_idsを使用してビューフォルダ内のフォルダを作成します。

    application/views/1/ 
    application/views/2/ 
    
  • コンストラクタのベースフォルダをCoreControllerに切り替えます。
0

それにDjangoはそのoptional "sites" frameworkでない方法を実行します。

  1. あなたのモデルにサイトを追加。
  2. サイトと既存のモデルとの関係を確立します。
  3. Load Site :: get_current_site()およびその属性を使用します。

Residuumの手法は、ファイルを整理するのに適しています。

関連する問題