2012-11-06 9 views
21

Voglio restituire un frammento di codice HTML e altri valori in una stringa JSON, qui è quello che ho:Come si restituisce un modello di rendering di ramoscello come parte di una risposta 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; 

Ma tutto quello che ottiene è {"html":{"headers":{}}}. C'è un modo per afferrare l'HTML reso?

risposta

41

Utilizzare invece $this->renderView().

$this->render() restituisce un oggetto Response, mentre $this->renderView() restituisce una stringa risultante dal rendering di un modello.

+3

Solo aggiungendo che questi metodi fanno parte di Symfony. La libreria Twig core utilizza $ twig-> display per l'output di contenuti, mentre $ twig-> render restituisce il contenuto. Potrebbe essere un po 'di confusione! :-) – Webberig

+2

un altro modo potrebbe essere l'uso del metodo getContent() dell'oggetto Response. – stef

Problemi correlati