我在 symfony2 中有一个 404 处理程序,它是一个 EventListener。
对于某些 404,我会进行重定向,效果很好。对于浏览器,不会抛出 404。
new RedirectResponse( $newURL );
该行基本上用 200 替换了 404 状态代码。
但在其他情况下,我想返回一些内容,而不是 404 消息,而是一些替换数据。像这样的东西:
$response = new Response( $returnJSONMessage );
$response->headers->set( 'Content-Type', 'application/json' );
$response->setStatusCode(200);
代码明智,这很好,但它不会阻止 404 被返回。我猜是因为它位于此:
$event->setResponse( $theResponse );
这是 GetResponseForExceptionEvent 类型。
我需要调用什么,让它以 200 而不是 404 的形式返回我的数据。就像 RedirectResponse 一样。我试过了:
$event->stopPropagation();
但这有点在事实之后。在这种情况下,似乎 $event->setResponse 中不是 RedirectResponse 的任何内容都被标记为 404。
有任何想法吗?