0

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

如果我犯了一个错误(例如拼写错误)或错误配置(就像我在过去 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);     

    }

}
4

1 回答 1

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 事件——如果其中一个侦听器返回一个 Response,则直接跳转到第 8 步;

于 2013-03-16T14:06:11.170 回答