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イベントが通知されます。リスナーの1つが応答を返すと、ステップ8に直接ジャンプします。

于 2013-03-16T14:06:11.170 に答える