1

这是一个 ZF2 问题。

我正在尝试更改我的模板,具体取决于我的控制器上设置的变量(因为我要决定使用哪个模板)。在我的 onBooststrap 模块中,我有:

$this->eventManager->attach('dispatch', function($e)
    {
        if (0 === strpos($e->getRouteMatch()->getParam('controller'), __NAMESPACE__, 0))
        {
            $e->getViewModel()->setTemplate('layout');
        }

    }, -100);

在我的控制器中:

class IndexController extends AbstractActionController
{
    public function indexAction ()
    {
        $view = new \Zend\View\Model\ViewModel();
        $view->setVariable("layout", "layout");
        return $view;
    }
}

但是,我如何访问该视图变量“布局”,以便我可以在 setTemplate 的调度事件中更改它?

4

1 回答 1

2

查看onDispatch方法和MvcEvent类,似乎有一个getResult()方法,这可能包含控制器操作的结果。

否则你看过布局控制器插件吗?该插件将允许您更改模板:

$this->layout('new layout');

当然,这需要在控制器内部,并且很可能需要将模板添加到模板映射中。

于 2012-09-25T18:01:40.637 回答