2011-05-30 34 views
2

我在想 - 如何在Zend中實現複合視圖。也就是說,我可以在一個頁面上擁有多個視圖和控制器嗎?我知道你可以使用佈局並將一個控制器的內容注入到佈局中,但無論如何要將多個控制器注入到特定的佈局中?如何在Zend中實現複合視圖?

在此先感謝。

回答

3

我不認爲你可以在一個佈局中使用多個控制器,有更多經驗的人可能會糾正我這一點。

我看不到任何理由,但你會想!

您可以使用$this->partial()視圖幫助程序添加部分視圖,或者添加您自己的視圖幫助程序以將內容添加到佈局。如果需要,只要只讀取數據以進行顯示,就沒有理由不直接在視圖中訪問模型。我用這種方式實現了側邊欄,登錄表單和導航菜單,沒有任何問題。

我希望這會有所幫助。

此致

加里

+2

嗯...有[這個幫手](http://framework.zend.com /manual/en/zend.view.helpers.html#zend.view.helpers.initial.action),但我們不敢說出它的名字。部分和視圖助手是要走的路。 – Phil 2011-05-31 05:56:11

+0

視圖動作助手是壞的,沒錯,還有動作堆棧的思維方式,但一些狂熱者正在努力解釋爲什麼actionStack並不那麼糟糕。 ActionStack使dispatchLoop&plugin操作更加複雜,難以理解。恕我直言,我認爲ActionStack是好的,因爲它很容易在ESI門或ajax模式組合中轉換,但似乎社區現在正在燒老的工具。 – regilero 2011-05-31 11:51:16

+0

是的,我同意,我可能會堅持自定義視圖助手。謝謝 – 2011-05-31 15:21:53

1

TestController.php

public function testAction() 
{ 
    $this-view->test = 'hi'; 
} 

test.phtml

<?php 
    echo $this->test; 
?> 

layout.phtml

$this->layout()->test = $this->action('testAction','TestController') 
echo $this->layout()->test; 

欲瞭解更多信息,請Apress.Pro.Zend.Framework.Techniques.Build.a.Full.CMS.Project