您的問題與需要臺式機和移動版本的網站非常相似。你可以研究用於此的解決方案。
我們通過在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();-)
謝謝西蒙。我會仔細看看這樣做的方式。 –
它從來沒有跨域使用:( - 我最終找到了一個完全不同的解決方案。在第二個域中,我做了一個JSON調用,就像wordpress上的一個插件。 –