简单的Symfony2事件看似设置,但没有触发

时间:2013-03-16 14:03:00

标签: symfony

我正在尝试设置一个简单的事件监听器,以便在每个请求的开始和之前执行一些代码。我只想回应一条简单的信息来检查它是否全部正常工作。

如果我犯了错误(例如拼写错误)或错误配置(就像我最近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);     

    }

}

1 个答案:

答案 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;