我有以下操作:ZF2 - 視圖模型兒童(ViewModel->的addChild())沒有在我的控制器的一個繪製
public function validateMessageAction() {
$sth = new ViewModel($this->params('params'));
$adServerOutput = $this->forward()->dispatch('Adserver/Controller/Index', array('action' => 'index'));
$sth->addChild($adServerOutput, 'adServerOutput');
return $sth;
}
接下來,我有以下模板:
adServerOutput: <?php echo $this->adServerOutput; ?><br><br>
Validate message link clicked<br>
中當然,Adserver/Controller/Index和相應的模板也可以被調用並且一旦被調用 - 顯示正確的輸出(來自它的模板)。
不幸的是,我在去validateMessage操作後得到的只是「Validate message link clicked」文本 - 沒有任何設置在Adserver/Controller/Index-> indexAction()中。
任何想法爲什麼這樣工作?
可能的其他信息可能實際上validateMessageAction()
也是由不同的控制器通過$this->forward()->dispatch(...)
觸發 - 也許可能是這種情況?
編輯:我已經檢查了還有 - 而且即使forward()
呼叫只進行一次 - 仍然問題依然存在......
我真的非常感謝任何提示 - 坐在這對於已經2天,不知道是什麼,甚至進一步檢查:)
編輯:附加的測試和信息 我已經做了一些額外的測試,發現這裏有一些額外的信息:
- 廣告服務器/控制器/的indexAction具有指定佈局的layout.phtml模板(用於測試目的示出了字符串「AdServer的佈局」)
- validateMessageAction具有指定佈局的layout.phtml tenplate以及(用於測試目的顯示字符串「validateMessage佈局)
現在,當我只嘗試調用
$a = $this->forward()->dispatch(...)
即使$一個未分配或使用,無論如何(只有這個屁股) - 頁面立即開始使用Adserver佈局(但仍然沒有顯示內容) - 忽略爲validateMessageAction()指定的佈局(當然,當我刪除那個assotiation時 - validateMessageAction()的佈局立即返回) 。
正如我在documentation中所理解的,前進不應該做任何動作,而只會導致包含渲染模塊的字符串。
然而,在這裏可以有一個額外的信息 - 是我使用EdpModuleLayouts - 也許這可能是某種程度上的問題來源?
您是否曾嘗試在子模板中的'$ this-> adServerOutput;'前添加'echo'?即'<?php echo $ this-> adServerOutput; ?> – Crisp
@Crisp添加答案 – AlexP
是的,我是...對不起,在清理代碼時有一點意外刪除了一點,以顯示確切的分離問題... –