當我最初建立我的網站時,它只處理一個接口,但現在我需要處理很多接口。zend一個控制器很多視圖
我可以檢測爲每個請求發送哪個站點,並將每個站點與其他站點隔離開,但所有站點都具有相同的視圖。
有沒有一種方法可以從同一個控制器渲染不同的視圖?
我想是這樣的:
application
controller
model
site_1_view
site_2_view
這可能嗎?
當我最初建立我的網站時,它只處理一個接口,但現在我需要處理很多接口。zend一個控制器很多視圖
我可以檢測爲每個請求發送哪個站點,並將每個站點與其他站點隔離開,但所有站點都具有相同的視圖。
有沒有一種方法可以從同一個控制器渲染不同的視圖?
我想是這樣的:
application
controller
model
site_1_view
site_2_view
這可能嗎?
這是非常簡單的 - 我發現我可以設置在我的構造函數中的觀點基本路徑:
$this->view->setBasePath("../application/site_1_view/views");
所以在public/index.php
,我發現了網址,它設置在會話中,從我的DB檢測的名稱,然後使用名稱來設置基本路徑:
$this->view->setBasePath("../application/".$siteName."/views");
所以應用結構現在是:
application
controllers
model
site_1_view
views
scripts
controllerName
ActionName
site_2_view
views
scripts
controllerName
ActionName
$this->view->render('script.phtml');
應該工作。
或者:
public function myAction()
{
return $this->otherAction();
}
public function otherAction()
{
}
鋼我會冗餘網站之間的行動,這不是我的目標 – shereifhawary 2010-06-04 13:37:01
添加新的腳本路徑,查看 LIFO棧
只是一個想法:檢測當前正在查看哪個網站,然後告訴Zend_View的使用腳本針對特定網站通過設置$view->setScriptPath(/path/to/site1/scripts/);
編輯:我可能在這個錯誤,但最好的地方設置這將是一個控制器插件在preDispatch
方法,因爲在那個時候,你會知道什麼模塊/控制器/ actio n所要求的,但尚未出動:http://framework.zend.com/manual/en/zend.controller.plugins.html
這會很快變得無法控制。你能舉出一個不同網站會有所不同的例子嗎? – 2010-06-04 14:04:54