【问题标题】:Symfony2 - Error Handler for specific BundleSymfony2 - 特定 Bundle 的错误处理程序
【发布时间】:2016-02-25 14:25:31
【问题描述】:

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

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

【问题讨论】:

  • 您的响应应该取决于请求的类型,而不是捆绑包。

标签: php symfony error-handling


【解决方案1】:

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

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

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

【讨论】:

  • 但我想知道如何根据捆绑包不同地处理异常\错误。常规响应不是问题。
  • 我了解,但响应可能不知道它来自的 Bundle。您可以将 BundleName 设置为响应属性并以类似于我上面概述的方式进行过滤,但您需要设置某种可过滤的数据。
【解决方案2】:

找到了解决办法。它很脏,但在我找到更好的东西之前会起作用。

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

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2018-09-19
    • 1970-01-01
    • 2017-12-18
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多