ZF2:如何传播Controller返回布局模板?

时间:2012-07-15 16:34:23

标签: viewmodel zend-framework2 zend-framework-mvc

我正在从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());

这真的是要走的路吗?我只是想分享我的所有变量,无论它的布局或页面模板。

1 个答案:

答案 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 hereShow me the user's login box之类的任务。几乎所有类型的状态消息都是如此。