2013-05-28 2 views
2

В моем приложении мне нужно сканировать сгенерированный вывод для некоторых элементов. Похоже, что SendResponseEvent будет очень полезен здесь, так как он дает мне сгенерированный контент так же, как он будет отправлен. К сожалению, документы не дают мне абсолютно никакой информации о том, как реально слушать это событие. Я пробовал это:Как использовать Zend2 SendResponseEvent

class Module implements InitProviderInterface 
{ 
    public function init(ModuleManagerInterface $moduleManager) { 
     $em = $moduleManager->getEventManager(); 
     $em->attach(SendResponseEvent::EVENT_SEND_RESPONSE, function(SendResponseEvent $e) { 
      $content = $e->contentSent(); 
      /* work on $content */ 
      $e->setContentSent($content); 
     }); 
    } 
} 

Однако, похоже, функция прослушивателя даже не называется.

Или есть лучший способ в Zend 2 работать над HTML прямо перед его отправкой?

ответ

2

Событие sendResponse фактически инициировано \Zend\Mvc\SendResponseListener, поэтому вам действительно нужно прослушать событие, поднятое этим классом. Вы не можете этого сделать, связавшись с менеджером событий менеджеров модулей, вместо этого вам нужно сделать это, связавшись с общим менеджером событий, который вы можете получить от менеджера событий менеджера модулей ...

class Module implements InitProviderInterface 
{ 
    public function init(ModuleManagerInterface $moduleManager) 
    { 
     $em = $moduleManager->getEventManager(); 
     // get the shared manager 
     $shared = $em->getSharedManager(); 
     // listen to the Zend\Mvc\SendResponseListener 
     $shared->attach('Zend\Mvc\SendResponseListener', 
      SendResponseEvent::EVENT_SEND_RESPONSE, 
      function(SendResponseEvent $e) { 
       $content = $e->contentSent(); 
       /* work on $content */ 
       $e->setContentSent($content); 
      }); 
    } 
} 
Смежные вопросы