3

我从控制器返回数据是这样的:

/**
 * Password request sent
 *
 * @return array
 */
public function passwordRequestSentAction ()
{
    return array(
        'foo' => $this->bar,
    );
}

但是$this->foo在 layout.phtml 中为空,即使它在控制器/密码请求Sent.phtml 中是正确的

我必须在我的抽象控制器中创建 postDispatch 方法并在 attachDefaultListeners() 中链接到它,并在 postDispatch 中执行此操作:

$e->getViewModel()->setVariables($e->getResult()->getVariables());

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

4

1 回答 1

2

您可以通过调用访问布局模板$this->layout()

class MyController extends AbstractActionController
{
    public function myAction()
    {
        $layout = $this->layout();
        // Returns the ViewModel of the Layout
    }
}

有关更多信息和示例,请查看手册的示例

但是在大多数情况下,我建议为这些任务编写一个 viewhelper - 特别是导航/... 这封装了控制器的逻辑,用于查看类似I want the navigation displayed hereor的任务Show me the user's login box。几乎所有类型的状态消息也是如此。

于 2012-07-16T12:30:12.970 回答