我正在使用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
}
}
}
答案 0 :(得分:1)
编写一个扩展CoreController
的{{1}}类,并让所有其他控制器扩展Controller
类,在您的情况下为CoreController
:
Home
使用site_ids在视图文件夹中创建文件夹:
class CoreController extends Controller {}
class Home extends CoreController {}
application/views/1/
application/views/2/
。答案 1 :(得分:0)
按照Django的optional "sites" framework:
的方式进行Residuum的方法适用于组织文件。