2016-12-08 8 views
0

まで私がSymfony-Documentationを読む限り、kernel.controllerイベントの応答処理について何も見つかりませんでした。 kernel.requestイベントのためにsymfony kernel.controllerイベントは、

ドキュメントは言う:

応答はこの段階で返された場合、プロセスはkernel.responseイベントに直接スキップします。

しかし、kernel.controllerイベントはどうですか? kernel.controllerイベントリスナーで応答を返すと、クライアントに応答が送信されますが、プロセスはキャンセルされず、要求されたコントローラアクションが呼び出されます。

イベント内の応答は、要求されたコントローラに進むことはできますか?

答えて

0

間接的に、FilterControllerEvent内のコントローラを変更することができます。

最後にレスポンスオブジェクトを返すことを前提として、任意の呼び出し可能オブジェクトをコントローラとして使用できます。あなたのイベントリスナーでは、例えば次のようにすることができます:

$event->setController(function() { 
    return new Response(); 
}); 

もちろん、あなたのコントローラではどんな種類の応答も返すことができます。

+0

ああ、この呼び出し可能な関数は私の「コントローラ」であり、応答を返します。これは道のりですか?あるいは、 'kernel.controller'イベントの後にコントローラを呼び出さないようにするためのベストプラクティスがありますか? – Syerad

+0

ウェザーかどうかはこれが私が知らない特定のユースケースに依存します。しかしこれは、デフォルトのコントローラがkernel.controllerイベントで実行されるのを防ぎ、例外をスローする方法です。 – Gerry

+0

大丈夫、ありがとう@Gerry – Syerad

関連する問題