Пользовательские страницы ошибок не работают, когда включен контроллер исключений - PullRequest
0 голосов
/ 29 марта 2020

При реализации пакета fos_rest с symfony у меня не может быть нормального поведения Symfony при обработке пользовательских страниц ошибок на 404, 405, 500 или любой другой ошибке, вызванной Symfony.

Работает нормально для каждой ошибки, сгенерированной с остальным пакетом в обычном контроллере отдыха.

Но на моей целевой странице (и о нас и так далее), которая не использует пакет fos_rest, а вместо этого веточку, пользовательские страницы ошибок не работают, вместо этого, похоже, они все равно обрабатываются пакетом fos_rest и всегда отправляют ошибку по умолчанию 500 (даже если она должна вызывать ошибку 404).

Если я деактивирую исключения в файле fos_rest.yaml (enabled: false), тогда пользовательские страницы ошибок работают нормально (настроено в соответствии с этой документацией здесь: https://symfony.com/doc/4.4/controller/error_pages.html)

fos_rest:
    routing_loader:
        default_format: json
        include_format: false
    body_listener: true
    format_listener:
        rules:
            - { path: '^/myROUTE1', priorities: ['json'], fallback_format: json, prefer_extension: false }
            - { path: '^/myROUTE2', priorities: ['json'], fallback_format: json, prefer_extension: false }
            - { path: '^/myROUTE3', priorities: ['json'], fallback_format: json, prefer_extension: false }
            - { path: '^/myROUTE4', priorities: ['json'], fallback_format: json, prefer_extension: false }
            - { path: '^/', priorities: ['html', 'json'], fallback_format: 'html' }
    param_fetcher_listener: true
    access_denied_listener:
        json: true
    view:
        view_response_listener: 'force'
        formats:
            json: true
    exception:
        enabled: true
        exception_controller: 'fos_rest.exception.controller:showAction'
        codes:
            Doctrine\ORM\EntityNotFoundException: 404
            \LogicException: 400
            \DomainException: 400
        messages:
            Doctrine\ORM\EntityNotFoundException: true
            \LogicException: true
            \DomainException: true

Как установить до пакета fos_rest для обработки исключений только для маршрутов, обработанных моими контроллерами rest, и оставить нормальное поведение Symfony 4 для остальной части сайта?

1 Ответ

0 голосов
/ 29 марта 2020

Я нашел решение, используя зоны. Мне пришлось добавить следующий фрагмент кода в мой fos_rest.yaml

zone:
    - { path: '^/myROUTE1' }
    - { path: '^/myROUTE1' }
    - { path: '^/myROUTE1' }
    - { path: '^/myROUTE1' }

Как описано здесь

Надеюсь, это поможет.

...