这是一个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事件中更改它?
答案 0 :(得分:2)
查看onDispatch
方法和MvcEvent
类似乎有getResult()
方法,这可能包含控制器操作的结果。
否则你看过布局控制器插件了吗?这个插件可以让你改变模板:
$this->layout('new layout');
当然,这需要在控制器内,并且很可能需要将模板添加到模板图中。