diff --git a/templating/formats.rst b/templating/formats.rst index 565255f22bb..eec1d8bd75e 100644 --- a/templating/formats.rst +++ b/templating/formats.rst @@ -9,10 +9,10 @@ most cases you'll use templates to render HTML content, a template can just as easily generate JavaScript, CSS, XML or any other format you can dream of. For example, the same "resource" is often rendered in several formats. -To render an article index page in XML, simply include the format in the +To render a contact index page in XML, simply include the format in the template name: -* *XML template name*: ``article/index.xml.twig`` +* *XML template name*: ``contact/index.xml.twig`` * *XML template filename*: ``index.xml.twig`` In reality, this is nothing more than a naming convention and the template @@ -22,18 +22,30 @@ In many cases, you may want to allow a single controller to render multiple different formats based on the "request format". For that reason, a common pattern is to do the following:: - public function indexAction(Request $request) - { - $format = $request->getRequestFormat(); +.. configuration-block:: + + .. code-block:: php-annotations + + /** + * @Route("/{_format}", name="contact_list", defaults={"_format": "html"}, requirements={"_format": "html|xml|pdf"}) + * + * @param Request $request + * + * @return Response + */ + public function indexAction(Request $request) + { + $format = $request->getRequestFormat(); - return $this->render('article/index.'.$format.'.twig'); - } + return $this->render('contact/index.'.$format.'.twig'); + } + The ``getRequestFormat`` on the ``Request`` object defaults to ``html``, but can return any other format based on the format requested by the user. The request format is most often managed by the routing, where a route can be configured so that ``/contact`` sets the request format to ``html`` while -``/contact.xml`` sets the format to ``xml``. For more information, see the +``/contact/xml`` sets the format to ``xml``. For more information, see the :ref:`Advanced Example in the Routing chapter `. To create links that include the format parameter, include a ``_format`` @@ -43,7 +55,7 @@ key in the parameter hash: .. code-block:: html+twig - + PDF Version @@ -51,9 +63,6 @@ key in the parameter hash: - + PDF Version