Пользовательский контроль исключений больше не работает после обновления до Symfony 2.8

#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