Создать новый исключение обработчика класса, как это:
namespace AppBundle\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
class ExceptionSubscriber implements EventSubscriberInterface
{
/* ... */
public static function getSubscribedEvents()
{
return [ KernelEvents::EXCEPTION => 'onKernelException' ];
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
$customResponse = new JsonResponse(['error' => 'My custom error message']);
$event->setResponse($customResponse);
}
}
Не забудьте зарегистрировать новую услугу в приложение/Config/services.yml:
app.exception_subscriber:
class: AppBundle\Subscriber\ExceptionSubscriber
tags:
- { name: kernel.event_subscriber }
You может просто вернуть «новый ответ» (json_encode (...)) 'с соответствующими заголовками, конечно. – Andrew
Это действительно то, что я сделал на данный момент. Но мне бы очень хотелось иметь возможность внести изменения в код между простой страницей, возвращающей код Json, и исключение, возвращающее код Json ... – Fab
Вы можете обработать это через обработчик исключений, стандартный ответ json, класс исключения пузырьков (фантастическое слово для класса обработчика исключений), и я уверен, что есть другие способы. – Andrew