Difference Between $this->renderView and $this->render in Symfony2
renderView(): Returns a rendered view.
render(): It renders full HTTP response (with headers) and returns a Response object (with the rendered template, headers, etc).
For example:
If you have a controller action that generates an XML file from a twig template using render() and serves it to clients like this :
but when you save the file on the browser side, It will contain the HTTP headers :
render(): It renders full HTTP response (with headers) and returns a Response object (with the rendered template, headers, etc).
For example:
If you have a controller action that generates an XML file from a twig template using render() and serves it to clients like this :
$response = new Response();
$response->setContent($this->render('MyBundle:Formation:feed.xml.twig',
array('formation' => $formation);
$response->headers->set('Content-Type', 'text/xml');
return $response;
but when you save the file on the browser side, It will contain the HTTP headers :
HTTP/1.0 200 OK Cache-Control: no-cache Date: Tue, 18 Oct 2015 12:04:39 GMT <?xml version="1.0" encoding="UTF-8"?> (...)In order to get rid of these headers in the downloaded XML file, you should use renderView() method,
$response = new Response();
$response->setContent($this->renderView('MyBundle:Formation:feed.xml.twig',
array('formation' => $formation);
$response->headers->set('Content-Type', 'text/xml');
return $response;

Comments
Post a Comment