Как стать автором
Обновить

Комментарии 5

Кроме красивого отображения ошибки стандартный Symfony обработчик еще логирует информацию об ошибке, в данной версии логирование тоже не помешало бы

Стандартный обработчик, который занимается логированием также зарегистрирован, у него более низкий приоритет.

Конечно, в классе App\Core\EventListener\ExceptionListener лучше бы обозначить метод exceptionFormatConverter, и определить его тегом kernel.event_listener, чтобы было нагляднее назначение созданного преобразователя ошибок.

App\Core\EventListener\ExceptionListener:
tags:
- { name: kernel.event_listener, event: kernel.exception, method: exceptionFormatConverter }

я реализовывал через EventSubscriber возможно с приоритетами не разобрался
как еще одна мысль по улучшению - передавать в конструктор env приложения, чтобы вызов логики обработчика можно было варьировать для разных окружений

Если в проекте подключен symfony/serializer, то будет работать из коробки

composer create-project symfony/skeleton symfony-accept-format
cd symfony-accept-format
composer req serializer 
GET http://127.0.0.1:8880/
Accept: application/json

#{
#    "type": "https:\/\/tools.ietf.org\/html\/rfc2616#section-10",
#    "title": "An error occurred",
#    "status": 500,
#    "detail": "Internal Server Error"
#}

###

GET http://127.0.0.1:8880/
Accept: text/html

###

#<body>
#<div class="container">
#    <h1>Oops! An Error Occurred</h1>
#    <h2>The server returned a "500 Internal Server Error".</h2>
#
#    <p>
#        Something is broken. Please let us know what you were doing when this error occurred.
#        We will fix it as soon as possible. Sorry for any inconvenience caused.
#    </p>
#</div>
#</body>
#</html>

Как бонус:

GET http://127.0.0.1:8880/
Accept: application/xml

###

#<?xml version="1.0"?>
#<response>
#    <type>https://tools.ietf.org/html/rfc2616#section-10</type>
#    <title>An error occurred</title>
#    <status>500</status>
#    <detail>Internal Server Error</detail>
#</response>
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории