Php 在分派事件上访问ViewModel变量

Php 在分派事件上访问ViewModel变量,php,zend-framework2,Php,Zend Framework2,这是一个ZF2问题 我正试图改变我的模板,这取决于在我的控制器上设置的变量(因为我将决定使用哪个模板)。 在我的onBooststrap模块中,我有: $this->eventManager->attach('dispatch', function($e) { if (0 === strpos($e->getRouteMatch()->getParam('controller'), __NAMESPACE__, 0)) {

这是一个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;
    }
}

但是,如何访问视图变量“layout”,以便在setTemplate上的dispatch事件中更改它?

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

否则,你有没有看过布局控制器插件?此插件允许您更改模板:

$this->layout('new layout');
当然,这需要在控制器内部,并且很可能需要将模板添加到模板映射中