При реализации пакета 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 для остальной части сайта?