私は、ビューテンプレート(NOTレイアウト)を変更する方法を探していますが、私は、このモジュール(それはベンダーの一部です)へのアクセスを持っていないので、私は行うことはできません。Zend 2:特定のアクションのテンプレートを変更するにはどうすればよいですか?
$view = new ViewModel();
$view->setTemplate($template);
それ私が何かの出来事につけることでそれをやることができればいいだろう。
私は、次のコードを試してみる:
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$eventManager->getSharedManager()->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', function($e) {
$controller = $e->getTarget();
$routeMatch = $e->getRouteMatch();
$routeName = $routeMatch->getMatchedRouteName();
if ($routeName === 'login') {
$controller->layout('layout/layout');
$e->getViewModel()->setTemplate('views/login');
}
}, 1);
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
}
をしかし、それはそのように動作していないように思えます。つまり、レイアウトが変更されてビューテンプレートが変更されたとします。たとえば、次のように試してみてください。 $this->form
null
が表示されます。このように見えるのは、そのアクションからすべての変数をクリアすることです。
どのように動作させるには?
コントローラの変数をビューにどのように設定しますか? – Hooli