2011-07-29 3 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 명령은 Symfony\Bundle\TwigBundle\TwigEngine의 인스턴스임을 나타냅니다.

+0

작동합니다. 감사합니다. – dmirkitanov

+0

문제가있어, 당신은 나의 베이컨을 다시 한번 저장했다. @templating과 같은 것들을 주입하는 것은 다소 마술 적입니다. – Espilon

관련 문제