2011-05-12 155 views
1

我想定義Zend_Layout應該從Bootstrap類使用哪個佈局。這個怎麼做?從Bootstrap設置Zend佈局

就像從控制器,你可以這樣做

$this->_helper->_layout = "somelayout"; 

我想佈局從引導類改變。

+0

你能解釋爲什麼你想在bootstrap中做到這一點?它似乎不是正確的地方..也許你正試圖解決錯誤的問題。 – 2011-05-13 05:12:36

+0

@Duncan_m,我正在嘗試爲單個網站創建不同的佈局,這可以動態更改。所以我需要這個。我可以通過一個控制器來完成,但是我會在每個控制器中指定它,而如果我在引導程序中初始化,它會更好 – mrN 2011-05-14 08:24:52

回答

2

你可以做到這一點,如下所示:

public function _initLayout() { 
    $layout = $this->bootstrap('layout')->getResource('layout'); 
    $layout->setLayout('somelayout'); 
} 
+2

+1當然,前提是您已經在'application.ini'中啓動了佈局,或者一些'_initLayout()'方法。 ;-) – 2011-05-12 12:43:36

+0

是的,我也在application.ini中啓動了佈局,但上面的代碼給出了一個空白頁面。 somelayout.phtml確實存在於佈局的腳本文件夾中,這是在application.ini中設置的默認佈局路徑 – mrN 2011-05-12 14:08:16

+0

@Marcin,@Alexander,你知道如何解決我收到的空白頁。 – mrN 2011-05-13 06:25:08

0

你可以深入瞭解一下它在這些網頁:

http://framework.zend.com/manual/en/zend.layout.quickstart.html

http://framework.zend.com/manual/en/zend.layout.options.html

第二個是更有益的,但請確保您在第一頁中閱讀「在Zend Framework MVC中使用Zend_Layout」。

如果您想從引導程序嚴格啓動佈局,您可以執行以下操作。

 

public function _initMyLayout() 
{ 
    $options = array(
    'layout'  => 'somelayout', 
    'layoutPath' => '/path/to/layouts', 
    'contentKey' => 'CONTENT' 
    }; 


    $layout = Zend_Layout::startMvc($options); 

    return $layout; 

} 
 

上述內容等同於您在.ini文件中指定默認腳本和路徑。

+0

它不工作 – mrN 2011-05-13 07:40:24