EventListener である symfony2 に 404 ハンドラがあります。
特定の 404 では、リダイレクトを行いますが、これはうまく機能します。ブラウザーには、404 はスローされません。
new RedirectResponse( $newURL );
その行は、基本的に 404 ステータス コードを 200 に置き換えます。
ただし、404 メッセージではなく、代わりのデータを代わりに返したい場合もあります。このようなもの:
$response = new Response( $returnJSONMessage );
$response->headers->set( 'Content-Type', 'application/json' );
$response->setStatusCode(200);
コード的にはこれで問題ありませんが、404 が返されるのを止めることはできません。それはこの中にあるので、私は推測しています:
$event->setResponse( $theResponse );
タイプは GetResponseForExceptionEvent です。
データを 404 ではなく 200 として返すには、何を呼び出す必要がありますか。RedirectResponse と同じように。私は試した:
$event->stopPropagation();
しかし、それは少し後です。この場合、RedirectResponse ではない $event->setResponse 内のすべてに 404 というラベルが付けられているようです。
何か案は?