2012-11-06 7 views
21

내가 JSON 문자열에 HTML 코드뿐만 아니라 다른 값을 반환하려면, 여기에 내가 무엇을 가지고 :나뭇 가지 렌더링 된 템플릿을 JSON 응답의 일부로 반환하려면 어떻게해야합니까?

$html = $this->render('sometemplate.html.twig', array('somevar' => $somevar)); 
$response = new Response(json_encode(array("html" => $html, "name" => "Joe Bloggs"))); 
$response->headers->set('Content-Type', 'application/json'); 
return $response; 

하지만 얻을 모든 {"html":{"headers":{}}}입니다. 렌더링 된 HTML을 가져 오는 방법이 있습니까?

답변

41

대신 $this->renderView()을 사용하십시오.

$this->render()Response 개체를 반환하고 $this->renderView()은 템플릿 렌더링 결과 문자열을 반환합니다.

+3

이 메소드는 Symfony에 포함되어 있습니다. Twig 코어 라이브러리는 내용을 출력하기 위해 $ twig-> display를 사용하고, $ twig-> render는 내용을 반환합니다. 조금 혼란 스러울 수 있습니다! :-) – Webberig

+2

다른 방법으로는 Response 객체의 getContent() 메서드를 사용할 수 있습니다. – stef

관련 문제