我在我的一个控制器中执行了以下操作:
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()
来电只进行一次 - 问题仍然存在......
我真的非常感谢任何提示 - 已经连续两天坐在这上面,甚至不知道要进一步检查的内容:)
编辑:其他测试和信息 我做了一些额外的测试,这里有一些额外的信息:
现在我只打算打电话
$a = $this->forward()->dispatch(...)
即使$ a未被分配或无论如何使用(仅执行此关联) - 页面立即开始使用Adserver布局(但仍未显示内容) - 忽略为validateMessageAction()指定的布局(当然当我删除那个assotiation时 - validateMessageAction()的布局立即恢复。
正如我在documentation转发中所理解的那样,不应该做任何动作,而只是使用包含渲染模块的字符串的结果。
这里可以有一个额外的信息 - 是我使用EdpModuleLayouts - 也许这可能是问题的根源?
答案 0 :(得分:0)
(代表OP发布)。
问题是由EdpModuleLayouts引起的 - 删除Adserver的布局(实际上不应该有布局)解决了这个问题。