ZF2 - ViewModel子项(ViewModel-> addChild())未呈现

时间:2016-11-04 15:48:33

标签: php zend-framework zend-framework2

我在我的一个控制器中执行了以下操作:

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-&gt; indexAction()中设置。

知道为什么会这样运作吗?

其他信息可能实际上validateMessageAction()也是通过$this->forward()->dispatch(...)从不同的控制器触发的 - 可能是这种情况?

编辑:我也检查了这一点 - 即使forward()来电只进行一次 - 问题仍然存在......

我真的非常感谢任何提示 - 已经连续两天坐在这上面,甚至不知道要进一步检查的内容:)

编辑:其他测试和信息 我做了一些额外的测试,这里有一些额外的信息:

  • adServer / Controller / indexAction有一个指定布局的layout.phtml模板(用于测试目的,显示字符串“AdServer Layout”)
  • validateMessageAction有一个layout.phtml tenplate,它也指定了布局(为了测试目的,显示字符串“validateMessage Layout)

现在我只打算打电话

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

即使$ a未被分配或无论如何使用(仅执行此关联) - 页面立即开始使用Adserver布局(但仍未显示内容) - 忽略为validateMessageAction()指定的布局(当然当我删除那个assotiation时 - validateMessageAction()的布局立即恢复。

正如我在documentation转发中所理解的那样,不应该做任何动作,而只是使用包含渲染模块的字符串的结果。

这里可以有一个额外的信息 - 是我使用EdpModuleLayouts - 也许这可能是问题的根源?

1 个答案:

答案 0 :(得分:0)

(代表OP发布)。

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