如何在EventListener中呈现模板?

dmi*_*nov 22 symfony

如何在Symfony 2中的EventListener中渲染模板?

class RequestListener
{
    public function __construct() { }

    public function onKernelRequest(GetResponseEvent $event)
    {
        $request  = $event->getRequest();

        // Here I want to render a particular twig template
        $response = new Response('Forbidden', 401);

        // replacing the response...
        $event->setResponse($response);
    }
}
Run Code Online (Sandbox Code Playgroud)

你能帮帮我吗?

Pro*_*tic 59

当您$this->render()在Controller中调用时,它实际上只是一个快捷方式$this->container->get('templating')->renderResponse().如果@templating作为构造函数参数传递给配置文件中的EventListener,您将能够使用模板引擎执行任何操作.

作为参考,如果你想查看模板引擎的代码,命令./app/console container:debug说这templating是一个实例Symfony\Bundle\TwigBundle\TwigEngine.