如何在symfony2中获取错误和堆栈跟踪作为JSON


How to get error and stack trace as JSON in symfony2?

在开发模式下,如果控制器有严重问题,我会收到一条带有堆栈跟踪的漂亮 erorr 消息。没关系。

但是,我当前的symfony2应用程序是其他应用程序使用的服务。获取与JSON或其他结构化方式相同的信息,而无需所有以视图为中心的html,css和java脚本,这将更加方便。

我阅读了如何自定义错误页面,但我不明白如何将symfony配置为发出JSON错误消息而不是HTML。

从上述文档中,我了解到已经有一个exception.json.twig文件可以执行此操作。我怎样才能告诉symfony使用这个模板而不是exception.html.twig

很难给出答案,因为你链接到的Symfony文档几乎告诉你你需要知道的一切。 注意这一点:

"如果你的侦听器在 GetResponseForExceptionEvent 上调用 setResponse(),事件传播将被停止,响应将被发送到客户端。

因此,如果您只是创建 JSON 响应并通过 setResponse() 进行设置,您应该已经全部设置好了。

毕竟我复制了 3 次vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception.json.twig文件以app/Resources/TwigBundle/views/Exception并命名

副本
  • error.html.twig
  • exception_full.html.twig
  • exception.html.twig

我不喜欢复制框架代码,但毕竟它可以完成这项工作。