我有2个网站。
www.xxx.com
& www.yyy.com
我在www.xxx.com
上有一个CakePHP解决方案,它运行正常。
我现在想让网站www.yyy.com
使用与www.xxx.com
相同的控制器和数据库。但它是完全不同的CTP和CSS。我当然可以将整个副本复制到www.yyy.com
但是我需要维护两组代码。我只想维护2套不同的CTPS和CSS。
所以问题是:
感谢。
答案 0 :(得分:0)
您的问题与需要桌面版和移动版的网站非常相似。您可以研究用于此的解决方案。
我们通过创建一个在beforeFilter()方法中设置变量的AppController来构建这样的东西(在你的情况下检查请求域),并在render方法中使用这个变量来选择要使用的布局和视图文件:
function render($action = null, $layout = null, $file = null) {
$view_file = false;
$layout_file = false;
// test for availability of layout does not work for null so set to default setting of null.
if ($layout === null) {
$layout = $this->layout;
}
// if not mobile: show desktop version.
if (!$this->is_mobile) {
$view_file = file_exists(VIEWS . $this -> name . DS . 'desktop/' . $file . '.ctp');
$layout_file = file_exists(LAYOUTS . 'desktop/' . $layout . '.ctp');
}
return parent::render($action, ($layout_file ? 'desktop/' : '') . $layout, ($view_file ? 'desktop/' : '') . $file);
}
这样,如果is_mobile为false,则使用子目录“desktop”中的视图/布局而不是默认值。您可以使用相同的系统为2个域创建单独的视图/布局。
我们通过覆盖render()而不是使用有时也建议的afterFilter()来做到这一点。我忘记了真正的原因,但知道这是因为我们无法让它像我们想要使用afterFilter(); - )