Php 为同一数据实现多个视图的想法
我使用的是CodeIgniter,但这个问题适用于任何MVC框架。我有一个自定义的CMS允许管理5个不同的网站。用户登录并在这些站点之间切换。他们可以向网站的每个区域添加内容。每个站点可以输入的CMS和数据都是相同的 面向公众的网站看起来完全不同,代表不同的品牌,尽管它们与其他所有网站包含相同的数据 那么,您将如何实施这些观点呢?我应该看看哪些设计模式 我现在唯一能想到的方法就是在每个controller>action中添加一个switch语句,以便为每个网站获取不同的视图,但必须有一种更聪明的方法来做到这一点。我想开始编写类似以下内容的代码: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语句,以便为每个网站获取不同的视图,但必须有一种更聪明的
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
- 将站点添加到模型中
- 在站点和现有模型之间建立关系
- 加载站点::获取当前站点()并使用其属性
- 将站点添加到模型中
- 在站点和现有模型之间建立关系
- 加载站点::获取当前站点()并使用其属性 Residuum的方法有利于组织文件
Residuum的方法有助于组织文件。像Django处理其: