2016-11-04 25 views
0

我有以下操作: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 - 也許這可能是某種程度上的問題來源?

+1

您是否曾嘗試在子模板中的'$ this-> adServerOutput;'前添加'echo'?即'<?php echo $ this-> adServerOutput; ?> – Crisp

+0

@Crisp添加答案 – AlexP

+0

是的,我是...對不起,在清理代碼時有一點意外刪除了一點,以顯示確切的分離問題... –

回答

0

(發佈代表OP)。

問題是由EdpModuleLayouts引起的 - 刪除Adserver(實際上不應該有佈局)的佈局解決了這個問題。

相關問題