Мне нужно отформатировать сообщения об ошибках и вывести их в формате JSON.
У меня есть следующий подписчик на события:
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\KernelEvents;
final class ExceptionSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [KernelEvents::EXCEPTION => 'onKernelException'];
}
public function onKernelException(ExceptionEvent $event) {/*..*/}
}
И следующая конфигурация в ./config/services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
App\EventSubscriber\ExceptionSubscriber:
tags:
- {name: kernel.event_subscriber, event: kernel.exception}
Этот подписчик событий работает, когда, например, контроллер выдает ошибку.
Но если у меня есть другая ошибка, например, неправильная инъекция DI
class FooBar {
public __constructor(NonExistingService $service) {/*..*/}
}
, то вывод все еще в формате Html и как Symfony страница ошибки.
Как сделать так, чтобы любая ошибка, которую ловит Symfony, преобразовывалась через мой класс в JSON?