Прослушиватель исключений пользовательских ошибок Symfony2 - рендеринг шаблонов или передача в контроллер

Я пытаюсь найти лучший способ обработки пользовательских страниц ошибок в Symfony2.Это включает в себя 500 и 404 'с и т. д.

Я могу создавать свои собственные пользовательские шаблоны (error404.html.twig и т. Д.) И выводить их нормально, проблема в том, что приложение требует, чтобы в базовый шаблон было передано несколько переменных, чтобы страница оставалась согласованной. Использование встроенного обработчика исключений приводит к недоступности требуемых переменных.

Я успешно настроил пользовательский прослушиватель событий исключения и зарегистрировал его в качестве службы:

namespace MyCo\MyBundle\Listener;

use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Bundle\TwigBundle\TwigEngine;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;



class MyErrorExceptionListener
{

    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        // We get the exception object from the received event
        $exception = $event->getException();

        if($exception->getStatusCode() == 404)
        {

            //$engine = $this->container->get('templating');
            //$content = $engine->render('MyBundle:Default:error404.html.twig');    
            //return $response = new Response($content);

            /* Also Tried */
            //$templating = $this->container->get('templating');    
            //return $this->render('MyBundle:Default:index.html.twig');



            $response = new Response($templating->render('MyBundle:Exception:error404.html.twig', array(
                    'exception' => $exception
            )));

            $event->setResponse($response);

        }


    }
}

Это нене работает, так как: $ container недоступен, то есть я не могу отобразить свою пользовательскую страницу.

Итак, два вопроса на самом деле, это правильный способ обработки пользовательских страниц ошибок или я должен передать ответ контроллеру? Если так, каков наилучший способ сделать это?

Если это правильно, как я могу сделать шаблонизатор доступным в моем Слушателе?

Ответы на вопрос(2)

Ваш ответ на вопрос