Symfony2 - 特定捆绑包的错误处理程序


Symfony2 - Error Handler for specific Bundle

在我目前的项目中,我有几个捆绑包。一个捆绑包用于 REST API,其中我需要使用自定义消息返回 JsonResponse on Errors。其他捆绑包应显示 HTML 错误页面。现在我添加了一个带有"onKernelException"-Method的"ExceptionListener",不幸的是,它总是会被触发。

如何为每个捆绑包设置不同的错误处理?或者,如果根据捆绑包发生错误,是否有一些好的/实用的/其他方法来设置不同的响应?

用你自己的类(RestfulJsonResponse extends JsonResponse)扩展JsonResponse,并使你的所有响应都使用捆绑包中的新响应(use RestfulJsonResponse as JsonResponse

然后在侦听器中,只需检查响应类型:

if ($response instanceof RestfulJsonResponse) {
    // do your thing
}

找到了一个解决方案。它很脏,但会起作用,直到我找到更好的东西。

我的异常处理程序通过附加到请求的控制器检测已执行的捆绑包。如果是REST API捆绑包,它将返回一个JsonResponse,否则它将返回,因此将执行Symfony异常处理。