访问视图模型上的调度事件变量(Access ViewModel variables on dispa

2019-09-22 23:56发布

这是一个问题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 dispatch事件改变呢?

Answer 1:

综观onDispatch方法和MvcEvent似乎还有一类getResult()方法,这可以包含来自控制器动作的结果。

否则,你看着布局控制器插件? 这个插件将允许您更改模板:

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

当然,这将需要在控制器内,最有可能需要增加模板到模板地图。



文章来源: Access ViewModel variables on dispatch event