我正在尝试设置一个简单的事件监听器,以便在每个请求的开始和之前执行一些代码。我只想回应一条简单的信息来检查它是否全部正常工作。
如果我犯了错误(例如拼写错误)或错误配置(就像我最近30分钟那样),那么它会返回各种错误消息。但我想我已将其设置为错误消息已经消失。
这是我的代码:
我已将此添加到我的/app/config.yml文件
services:
kernel.listener.request_listener:
class: Acme\Bundle\NewBundle\EventListener\RequestListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelRequest }
这是相关文件中的代码
namespace Acme\Bundle\NewBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpFoundation\Response;
class RequestListener
{
public function onKernelRequest(GetResponseEvent $event)
{
$response = new Response();
$response->setContent("hello");
$event->setResponse($response);
}
}
答案 0 :(得分:2)
我相信你已经迷上了错误的事件kernel.exception
,只有在发生异常时才调用/调度。
我相信你应该迷上kernel.request
事件,
services:
kernel.listener.request_listener:
class: Acme\Bundle\NewBundle\EventListener\RequestListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
在开始处理请求之前,在每个请求上调用/分派 kernel.request
。
http://symfony.com/doc/2.0/book/internals.html#handling-requests
在执行任何其他操作之前,会通知kernel.request事件 - 如果其中一个侦听器返回响应,则会直接跳转到步骤8;