[英]Pass data to controller from Module.php
如何將數據從Module類傳遞給控制器?
我需要將數據從onBootstrap方法傳遞到所有模塊控制器。 做這個的最好方式是什么。 我可以使用$e->getTarget()
訪問控制器,但不知道如何將自定義數據傳遞給它。 也許控制器有存儲空間?
控制器可以訪問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');
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.