FOS Rest bundle - не может использовать настроенный контроллер ошибок - PullRequest
0 голосов
/ 05 марта 2020

У меня есть проект с 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 (например, несуществующий контроллер), и код не выходит из строя, ведьма заставляет меня думать, что что-то неправильно подключено. Есть идеи, почему это не работает? Большое спасибо!

...