У меня есть проект с Symfony 4.4 и FosRestBundle. Я пытаюсь настроить обработку исключений, изменив вывод json. В этом конкретном случае у меня есть контроллер, который получает параметр языка строки запроса и проверяет его правильность (en_GB, it_IT, et c ...). Поэтому, когда я передаю неверный код языка, я хочу, чтобы он обрабатывался моим собственным контроллером. Исключение выдается, но оно перехватывается, так как оно никогда не отправляется на мой пользовательский контроллер, похоже, что он Symfony напрямую выводит. Мой fos_rest.yaml:
fos_rest:
param_fetcher_listener: force
exception:
enabled: true
exception_controller: 'AppBundle\Action\ExceptionAction'
Мой контроллер действий:
/**
* @Route(
* "/api/v1/categories/{id}",
* name="get_category",
* methods={"GET"},
* requirements={"id"="\d+"}
* )
*
* @QueryParam(
* name="language",
* requirements=@Assert\LanguageCode,
* strict=false,
* description="Language code in ISO format, i.e. fr_FR"
* )
*
* @param Request $request
*
* @return JsonResponse
*/
public function __invoke(Request $request): JsonResponse
{
/**
* @Route(
* "/api/v1/categories/{id}",
* name="get_category",
* methods={"GET"},
* requirements={"id"="\d+"}
* )
*
* @QueryParam(
* name="language",
* requirements=@Assert\LanguageCode,
* strict=false,
* description="Language code in ISO format, i.e. fr_FR"
* )
*
* @param Request $request
*
* @return JsonResponse
*/
public function __invoke(Request $request): JsonResponse
{
Одна вещь, которая меня беспокоит, это то, что я могу написать все, что захочу в параметре конфигурации exception_controller (например, несуществующий контроллер), и код не выходит из строя, ведьма заставляет меня думать, что что-то неправильно подключено. Есть идеи, почему это не работает? Большое спасибо!