Symfony2 - 特定Bundle的错误处理程序

时间:2016-02-25 14:25:32

标签: php symfony error-handling

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

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

2 个答案:

答案 0 :(得分:0)

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

然后在你的监听器中,只检查响应的类型:

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

答案 1 :(得分:0)

找到解决方案。它很脏,但一直有效,直到找到更好的东西。

My ExceptionHandler通过附加到Request的Controller检测执行的Bundle。如果它是REST API Bundle,它将返回一个JsonResponse,否则它将返回,因此将执行Symfony异常处理。