mvc イベントを使用してレイアウトを変更したい。私は次のことを試しました:
// $event instanceof \Zend\Mvc\MvcEvent
$serviceManager = $event->getApplication()->getServiceManager();
$controllerLoader = $serviceManager->get('ControllerLoader');
$controllerLoader->addInitializer(function ($controller) {
$controller->layout('layout/example');
// OR THIS
$controller->getEvent()->getViewModel()->setTemplate('layout/example');
});
私のアプローチは、エラー通知などを生成しません。存在しなくても構いlayout/example
ません。を使用してコントローラの内部からレイアウトを変更できるのに$this->layout()
、外部からは変更できないのはなぜ$controller->layout()
ですか?
私もこの方法で試しました:
// $event instanceof \Zend\Mvc\MvcEvent
$serviceManager = $event->getApplication()->getServiceManager();
$renderingStrategy = $serviceManager->get('DefaultRenderingStrategy');
$renderingStrategy->setLayoutTemplate('layout/example');
これもエラーをスローしませんが、何も変更しません。
実行時にコントローラの外部からレイアウトを切り替えるにはどうすればよいですか?