我正在使用 CodeIgniter,但这个问题适用于任何 MVC 框架。我有一个自定义 CMS,可以管理 5 个不同的网站。用户登录并在这些站点之间切换。他们可以将内容添加到站点的每个区域。每个站点可以输入的 CMS 和数据是相同的。
面向公众的网站看起来完全不同,代表不同的品牌,尽管它们包含与所有其他网站相同的数据。
那么你将如何实现这些视图呢?有没有我应该看的设计模式?
我现在能想到的唯一方法是在每个控制器 > 动作中放置一个 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
}
}
}