Php 在分派事件上访问ViewModel变量
这是一个ZF2问题 我正试图改变我的模板,这取决于在我的控制器上设置的变量(因为我将决定使用哪个模板)。 在我的onBooststrap模块中,我有: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)) {
$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');
当然,这需要在控制器内部,并且很可能需要将模板添加到模板映射中