2012-03-21 150 views
0

根據Rob Allen's tutorial:使用佈局到我的Zend的應用程序我應該把:Zend框架佈局

$response = $this->getResponse(); 
$response->insert('header', $this->view->render('header.phtml')); 
$response->insert('sidebar', $this->view->render('sidebar.phtml')); 
$response->insert('footer', $this->view->render('footer.phtml')); 

到IndexController中的init()函數,來生成每個頁眉,頁腳和側邊欄行動。 我想爲所有的視圖使用相同的佈局,我應該把這部分代碼放入所有的控制器嗎? (我正在使用ZF 1.11)

謝謝。

回答

1

你可以通過在引導做以下初始化一個Zend佈局:

Zend_Layout::startMvc(); 

,你也可以指定你保持你的佈局

$layout = Zend_Layout::getMvcInstance(); 
$layout->setLayoutPath(__PATH_TO_LAYOUT_FOLDER_); 

一旦到位,它將比在所有控制器中渲染相同的視圖效率更高。

0

到目前爲止,它更容易實現。在您的application.ini中添加此行

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"並且此路徑的默認佈局將被命名爲layout.phtml

如果要更改路徑或默認佈局可能會在這種情況下,默認的佈局將master.phtml需要在application.ini

resources.layout.layoutPath = APPLICATION_PATH "/layouts" 
resources.layout.layout = master 

兩行。

從默認佈局到一個備用改變很簡單,只要添加:

public function preDispatch() { 

     $this->_helper->layout->setLayout('admin'); 
    } 

到需要新的佈局控制器,可加入邏輯所以備用佈局將僅被應用到某些動作。