我在module.php中设置了变量,我可以在布局中获得。 现在我也想在控制器中使用这个变量。
public function onBootstrap(MvcEvent $e) {
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
// $this->initAcl($e);
$e->attach(MvcEvent::EVENT_RENDER, array($this, 'setVariableToLayout'), 100);
}
public function setVariableToLayout(MvcEvent $event) {
$viewModel = $event->getViewModel();
$viewModel->setVariables(array(
'controller' => $event->getRouteMatch()->getParam('controller'),
));
}
如何在我的所有控制器中获取该变量。 如果我试图在控制器中获取变量,如print_r($ controller)或print_r($ this-> controller),则会给出未定义的错误。
这是module.php文件,我已设置控制器作为请求控制器。,从onBootstrap调用的函数
答案 0 :(得分:0)
我不明白视图中是否需要控制器名称。视图应该只关心正确渲染所需的参数;不是哪个控制器被派遣。
我假设你正在做某种条件视图逻辑if ($controller == 'foo')
然后这应该大声喊叫你需要为每个'状态'使用不同的ViewModel
。如果它们是共享视图脚本,那么请查看查看助手或查看部分。
用上述说法;我能看到的唯一错误是:
$e->attach(MvcEvent::EVENT_RENDER, ....
应该是:
$eventManager->attach(MvcEvent::EVENT_RENDER, ....
或许这是一个错字,但要澄清:
trigger()
时将其注入事件监听器)