2013-04-17 73 views
1

我有2個網站。 www.xxx.com & www.yyy.comCakePhp - 通過不同的URL分割視圖和控制器

我有一個www.xxx.com CakePHP的解決方案,它工作正常。

我想現在使網站www.yyy.com使用相同的控制器和數據庫作爲www.xxx.com。但它有完全不同的CTP和CSS。我當然可以將整個地段複製到www.yyy.com,但我需要維護2套代碼。我只想維護2套不同的CTPS和CSS。

所以問題是:

  1. 可以拆分在2個不同的網址,控制器和視圖?
  2. 假設1的答案是肯定的。你可以有2個不同的網站使用相同的控制器和數據庫,但顯示完全不同的視圖& CSS?
  3. 根據您的經驗,在做這件事之前應該考慮些什麼?

謝謝。

回答

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,則使用subdir'desktop'中的視圖/佈局而不是默認值。您可以使用相同的系統爲2個域創建單獨的視圖/佈局。

我們通過重寫render()而不是使用afterFilter()來做到這一點,有時也建議這樣做。我忘了真正的原因,但知道這是因爲我們無法像使用afterFilter()一樣工作,因爲它使用afterFilter();-)

+0

謝謝西蒙。我會仔細看看這樣做的方式。 –

+0

它從來沒有跨域使用:( - 我最終找到了一個完全不同的解決方案。在第二個域中,我做了一個JSON調用,就像wordpress上的一個插件。 –

相關問題