2011-07-29 55 views
21

如何在Symfony 2中的EventListener中渲染模板?如何渲染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); 
    } 
} 

你能幫我解決嗎?

回答

58

當您在控制器中調用$this->render()時,它實際上只是$this->container->get('templating')->renderResponse()的快捷方式。如果您將@templating作爲構造函數參數傳遞給您的配置文件中的EventListener,則可以使用模板引擎進行任何操作。

僅供參考,如果您想查看模板引擎的代碼,則命令./app/console container:debug表示templatingSymfony\Bundle\TwigBundle\TwigEngine的實例。

+0

它的工作原理,謝謝! – dmirkitanov

+0

有問題,您再次保存了我的培根。注入類似@templating的東西有點神奇。 – Espilon