2011-07-29 24 views
21

Symfony 2'de bir EventListener içinde nasıl şablon oluşturabilirim?Bir EventListener'da şablon nasıl oluşturulur?

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); 
    } 
} 

Bu konuda bana yardımcı olabilir misiniz?

cevap

58

Denetleyicide $this->render() numaralı telefonu aradığınızda, bu yalnızca $this->container->get('templating')->renderResponse() için bir kısayoldur. Yapılandırma dosyanızdaki EventListener öğenize @templating yapıcı argümanını iletirseniz, şablonlama motoruyla istediğiniz her şeyi yapabilirsiniz.

Referans olarak, şablonlama motorunun koduna bakmak isterseniz, ./app/console container:debug komutu, templating öğesinin Symfony\Bundle\TwigBundle\TwigEngine'un bir örneğidir.

+0

Çalışıyor, teşekkürler! – dmirkitanov

+0

Sorunlu, pastırmamı bir kez daha kurtardın. @ Templating gibi şeyleri enjekte etmek biraz büyülüdür. – Espilon

İlgili konular