#php #symfony #exception-handling
#php #symfony #исключение
Вопрос:
Я только что обновил свою страницу Symfony 2.7 до версии 2.8. Помимо самого Symfony, также был обновлен ряд других пакетов (например FOSUserBundle
, FOSRestBundle
, Doctrine
, и т.д.).
После обновления my CustomExceptionController
больше не работает. Ошибка, подобная 404 или 500, показывает страницу исключений по умолчанию вместо моей пользовательской страницы. До обновления мой CustomExceptionController
работал без каких-либо проблем.
Это конфигурация:
// app/config/config.yml
...
twig:
exception_controller: app.exception_controller:showAction
// src/MyAppBundle/Resources/config/services.yml
app.exception_controller:
class: MyAppBundleControllerCustomExceptionController
arguments: ['@twig', '%kernel.debug%', "@translator.default" ]
// src/MyAppBundle/Controller/CustomExceptionController.php
use SymfonyComponentDebugExceptionFlattenException;
//use SymfonyComponentHttpKernelExceptionFlattenException;
class CustomExceptionController extends ExceptionController {
protected $translator;
public function __construct(Twig_Environment $twig, $debug, Translator $translator) {
parent::__construct($twig, $debug);
$this->translator = $translator;
}
public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null) {
...
}
Единственным изменением в конфигурации CustomExceptionController
является использование
use SymfonyComponentDebugExceptionFlattenException
вместо
use SymfonyComponentHttpKernelExceptionFlattenException
(который устарел с Symfony 2.3). Однако проблема та же, что и при возврате к ..HttpKernel...
классу.
Насколько я могу судить, других изменений в конфигурации CustomExceptionController
не было. Конфигурация точно такая же, как в документах Symfony.
Есть идеи, что может быть не так?
Комментарии:
1. Если вы просто хотите создать пользовательскую страницу ошибок, вы уже смотрели на это? symfony.com/doc/2.8/controller/error_pages.html
2. Да, я это сделал. Как вы можете видеть, я упомянул эту ссылку в своем вопросе 🙂 Насколько я могу судить, я точно следовал этим инструкциям для создания и настройки my
CustomExceptionController
. Дополнительно: я ужеCustomExceptionController
несколько месяцев без проблем использовал Symfony 2.7. Проблема обнаружилась после обновления до Symfony 2.8.3. Я полагаю, вы уже очистили свой кеш? Если да, то каково значение параметра «twig.exception_listener.controller» в вашем сервисном контейнере (должно быть «app.exception_controller: showAction»)?
4. Я не знаю
twig.exception_listener.controller
, где я должен установить это значение? Вы имеетеtwig.exception_controller
в виду, что должно быть указано вconfig.yml
? Как описано в моем вопросе, это определяется какapp.exception_controller:showAction
5. Я думаю, вам следует взглянуть на ссылку на конфигурацию FOSRestBundle, по умолчанию она переопределяет ваше пользовательское сообщение об исключении. Посмотрите на узлы exception_controller, коды, сообщения в разделе
exception