簡體   English   中英

從Module.php將數據傳遞到控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM