Php 为同一数据实现多个视图的想法

Php 为同一数据实现多个视图的想法,php,model-view-controller,design-patterns,architecture,structure,Php,Model View Controller,Design Patterns,Architecture,Structure,我使用的是CodeIgniter,但这个问题适用于任何MVC框架。我有一个自定义的CMS允许管理5个不同的网站。用户登录并在这些站点之间切换。他们可以向网站的每个区域添加内容。每个站点可以输入的CMS和数据都是相同的 面向公众的网站看起来完全不同,代表不同的品牌,尽管它们与其他所有网站包含相同的数据 那么,您将如何实施这些观点呢?我应该看看哪些设计模式 我现在唯一能想到的方法就是在每个controller>action中添加一个switch语句,以便为每个网站获取不同的视图,但必须有一种更聪明的

我使用的是CodeIgniter,但这个问题适用于任何MVC框架。我有一个自定义的CMS允许管理5个不同的网站。用户登录并在这些站点之间切换。他们可以向网站的每个区域添加内容。每个站点可以输入的CMS和数据都是相同的

面向公众的网站看起来完全不同,代表不同的品牌,尽管它们与其他所有网站包含相同的数据

那么,您将如何实施这些观点呢?我应该看看哪些设计模式

我现在唯一能想到的方法就是在每个controller>action中添加一个switch语句,以便为每个网站获取不同的视图,但必须有一种更聪明的方法来做到这一点。我想开始编写类似以下内容的代码:

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
        }
    }
}
  • 编写一个扩展
    Controller
    CoreController
    类,并让所有其他控制器扩展
    CoreController
    类,在您的情况下是
    Home

    class CoreController extends Controller {}
    class Home extends CoreController {}
    
  • 使用站点ID在视图文件夹中创建文件夹:

    application/views/1/
    application/views/2/
    
  • CoreController
    的构造函数中切换基本文件夹
      • 编写一个扩展
        Controller
        CoreController
        类,并让所有其他控制器扩展
        CoreController
        类,在您的情况下是
        Home

        class CoreController extends Controller {}
        class Home extends CoreController {}
        
      • 使用站点ID在视图文件夹中创建文件夹:

        application/views/1/
        application/views/2/
        
      • CoreController
        的构造函数中切换基本文件夹

      用Django处理其:

    • 将站点添加到模型中
    • 在站点和现有模型之间建立关系
    • 加载站点::获取当前站点()并使用其属性

    • Residuum的方法有助于组织文件。

      像Django处理其:

    • 将站点添加到模型中
    • 在站点和现有模型之间建立关系
    • 加载站点::获取当前站点()并使用其属性
    • Residuum的方法有利于组织文件