我正在从Controller返回数据:
/**
* Password request sent
*
* @return array
*/
public function passwordRequestSentAction ()
{
return array(
'foo' => $this->bar,
);
}
但是$this->foo
在layout.phtml中为空,即使它在controller / passwordRequestSent.phtml中是正确的
我必须在我的抽象控制器中创建postDispatch方法并在attachDefaultListeners()中链接到它,并在postDispatch中执行此操作:
$e->getViewModel()->setVariables($e->getResult()->getVariables());
这真的是要走的路吗?我只是想分享我的所有变量,无论它的布局或页面模板。
答案 0 :(得分:2)
您可以通过调用$this->layout()
:
class MyController extends AbstractActionController
{
public function myAction()
{
$layout = $this->layout();
// Returns the ViewModel of the Layout
}
}
了解更多信息&样本检查the manual's examples。
然而,在大多数情况下,我建议为这些任务编写一个viewhelper - 尤其是导航/ ...这将封装控制器的逻辑来查看I want the navigation displayed here
或Show me the user's login box
之类的任务。几乎所有类型的状态消息都是如此。