如何从Module类传递数据到控制器?
我需要将onBootstrap方法的数据传递给所有模块控制器。做这个的最好方式是什么。我可以使用$e->getTarget()
访问控制器,但不知道如何将自定义数据传递给它。也许控制器有存储空间?
答案 0 :(得分:1)
控制器可以访问MvcEvent
你可以设置一个事件监听器来附加任意数据,然后在控制器中获取它。
<强> Module.php 强>
public function onBootstrap(MvcEvent $event)
{
$event->setParam('foo', 'bar');
}
<强>控制器强>
public function fooAction() {
$foo = $this->getEvent()->getParam('foo', false);
}
@JonDay建议一个也能很好用的事件监听器。
public function onBootstrap(MvcEvent $event)
{
$application = $event->getApplication();
$eventManager = $application->getEventManager()->getSharedManager();
$eventManager->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', function($event) {
$controller = $event->getTarget();
// Set public property
$controller->foo = 'bar';
// OR protected with setter
$controller->setFoo('bar');
});
}