Это вопрос 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?
Если посмотреть на метод MvcEvent
класс MvcEvent
то есть метод getResult()
, это может содержать результат действия контроллера.
В противном случае вы посмотрели плагин контроллера плагина? Этот плагин позволит вам изменить шаблон:
$this->layout('new layout');
Конечно, это должно быть внутри контроллера и, скорее всего, нужно добавить шаблон в шаблонную карту.