Zai*_*Zed 5 event-listener symfony
我试图在Symfony2中使用事件监听器记录请求和响应.
我已经注册了以下服务:
class LoggerListener
{
/**
* @var \Doctrine\ODM\MongoDB\DocumentManager
*/
private $documentManager;
public function __construct(DocumentManager $documentManager)
{
$this->documentManager = $documentManager;
}
public function onKernelResponse(FilterControllerEvent $event)
{
$controller = $event->getController();
if ( ! is_array($controller)) {
return;
}
if ( ! $controller instanceof BaseAPIController) {
return;
}
$log = new ServerRequestsLog();
$log->setRequest($request);
$log->setRequest($response);
}
}
Run Code Online (Sandbox Code Playgroud)
使用此配置:
example.response_listener:
class: Example\ServerBundle\EventListener\LoggerListener
arguments: ["@doctrine.odm.mongodb.document_manager"]
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
Run Code Online (Sandbox Code Playgroud)
如何在此操作中获取请求和响应?如果我将注入请求服务,我想我可以得到请求.但是回应怎么样?
正如你可以在这里阅读,kernel.response事件对象,传递给你的听众是FilterResponseEvent.这个对象有两个getRequest和getResponse方法.所以你的代码应该是这样的:
public function onKernelResponse(FilterResponseEvent $event)
{
$request = $event->getRequest();
$response = $event->getResponse();
$log = new ServerRequestsLog();
$log->setRequest($request);
$log->setRequest($response);
//....Save it with document manager, etc.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4363 次 |
| 最近记录: |