Исключение формата Symfony2, вызванное аннотацией метода

В Symfony 2.4 я использую аннотацию маршрута и метода следующим образом:

/** di elaborazione creazione offerta
 * 
 * @param Request $request
 * @return JsonResponse
 * 
 * @Route("/process", name="process", options={"expose" : true}, defaults={"_format" : "json"})
* @Method("POST")
*/

если я выброшу исключение MethodNotAllowedException внутри тела действия, ответ будет правильно отформатирован в формате json, тогда как вызов в HTTP: GET возвращает полностью отформатированную страницу исключения html, как если бы атрибут _format не был загружен. Можно ли передать атрибут _format в подзапрос ExceptionController?


person Matteo Rossi    schedule 15.09.2016    source источник


Ответы (1)


Не разрешать @Method("GET") означает, что Symfony отклоняет запрос на уровне маршрута и выполняет контроллер исключений по умолчанию. Если вы хотите переопределить вывод исключения по умолчанию, переопределите поведение исключения по умолчанию, как описано здесь.

Я думаю, вы можете получить исключение JSON, просто добавив несколько шаблонов .json.twig. Вы также можете переопределить контроллер исключений по умолчанию, если вам нужна большая гибкость.

person nurikabe    schedule 17.05.2017