[英]CakePhp - Splitting Views and Controllers over different URLS
我有2個網站。 www.xxx.com
和www.yyy.com
我在www.xxx.com
上有一個CakePHP解決方案,它工作正常。
我現在要使網站www.yyy.com
使用與www.xxx.com
相同的控制器和數據庫。 但是它具有完全不同的CTP和CSS。 我當然可以將全部復制到www.yyy.com
但是然后我需要維護2套代碼。 我只想維護2套不同的CTPS和CSS。
所以問題是:
謝謝。
您的問題與需要台式機和移動版本的網站非常相似。 您可以研究用於此的解決方案。
我們通過創建一個AppController來構建類似的東西,該AppController在beforeFilter()方法中設置了一個變量(在您的情況下檢查請求域),並在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()那樣使它正常工作;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.