2011-07-29 16 views
21

मैं सिम्फनी 2 में इवेंट लिस्टनर के अंदर टेम्पलेट कैसे प्रस्तुत कर सकता हूं?इवेंट लिस्टनर के अंदर टेम्पलेट कैसे प्रस्तुत करें?

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() के लिए एक शॉर्टकट है। यदि आप अपनी कॉन्फ़िगरेशन फ़ाइल में अपने EventListener के कन्स्ट्रक्टर तर्क के रूप में @templating पास करते हैं, तो आप टेम्पलेटिंग इंजन के साथ जो भी चाहें कर सकते हैं।

संदर्भ के लिए, यदि आप templating इंजन के कोड को देखने के लिए चाहते हैं, आदेश ./app/console container:debug का कहना है कि templatingSymfony\Bundle\TwigBundle\TwigEngine का एक उदाहरण है।

+0

यह काम करता है, धन्यवाद! – dmirkitanov

+0

समस्याग्रस्त, आपने एक बार फिर से मेरे बेकन को बचा लिया है। @ टेम्पलेटिंग जैसी चीजें इंजेक्शन करना थोड़ी जादुई है। – Espilon

संबंधित मुद्दे