【问题标题】:How to get error and stack trace as JSON in symfony2?如何在 symfony2 中以 JSON 格式获取错误和堆栈跟踪?
【发布时间】:2014-12-12 07:48:00
【问题描述】:

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

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

我阅读了How to Customize Error Pages,但我不明白如何配置 symfony 以发出 JSON 错误消息而不是 HTML。

从提到的文档中,我了解到已经有一个 exception.json.twig 文件可以执行此操作。我如何告诉 symfony 使用这个模板而不是 exception.html.twig

【问题讨论】:

    标签: php json symfony


    【解决方案1】:

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

    “如果您的侦听器在 GetResponseForExceptionEvent 上调用 setResponse(),则将停止事件传播并将响应发送到客户端。”

    因此,如果您只是创建 JSON 响应并通过 setResponse() 设置它,那么您应该一切就绪。

    【讨论】:

    • 我不明白把这些东西放在哪里。 你的听众是什么?我在哪里创建这个 JSON 响应?我目前拥有的只是一个失败的控制器。我必须添加/创建什么?抱歉,我不明白从哪里开始。
    • 我引用了您提供的 Symfony 链接。该链接提供了引发异常时发生的情况的解释和示例。有关更深入的示例,请查看 Symfony 的 How to Create an Event Listener,它会引导您创建所需的侦听器。
    【解决方案2】:

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

    • error.html.twig
    • exception_full.html.twig
    • exception.html.twig

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

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 2014-08-20
      • 2013-04-18
      • 2010-10-11
      • 2010-09-11
      • 2010-12-06
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      相关资源
      最近更新 更多