ZF2 - 视图模型子项 (视图模型->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动作后,只是"验证消息链接点击"的文本-没有什么是设置在Adserver/Controller/Index->indexAction()。

知道为什么会这样吗?

额外的信息可能是实际上validateMessageAction()也通过$this->forward()->dispatch(...)从不同的控制器触发-可能是这样吗?

EDIT:我也检查过了-即使forward()调用只做了一次-问题仍然存在…

我真的非常感谢任何提示-坐在这里已经2天了,甚至不知道该进一步检查什么:)

EDIT:附加测试和信息我做了一些额外的测试,发现这里有一些额外的信息:

  • adServer/Controller/indexAction有一个布局。指定布局的phtml模板(用于测试目的显示字符串"AdServer布局")
  • validateMessageAction有一个布局。指定布局的php模板(用于测试目的显示字符串"validateMessage layout)

现在当我只试着呼叫

$a = $this->forward()->dispatch(...)

即使$a没有被分配或以任何方式使用(只执行此关联)-页面立即开始使用Adserver布局(但仍然没有显示内容)-忽略为validateMessageAction()指定的布局(当然,当我删除该关联时- validateMessageAction()的布局立即返回)。

正如我在文档中所理解的,forward不应该做任何动作,而只会产生包含呈现模块的字符串。

然而,这里可以有一个额外的信息-我使用EdpModuleLayouts -也许这可能是问题的某种来源?

(代表OP发布)

问题是由EdpModuleLayouts -删除布局的Adserver(实际上不应该有一个布局)解决了这个问题。

最新更新