Las plantillas en Symfony2 se pueden definir de manera global en el directorio app/Resources/views/default/ y con twig podemos definir una serie de bloques que luego serán utilizados en las vistas normales para “rellenar” esa plantilla. Veamos un ejemplo.
Plantilla.html.twig
<!DOCTYPE HTML> <html lang="es"> <head> <meta charset="utf8"/> <title>{% block title %} Plantillas en Symfony2 {% endblock %}</title> </head> <body> <div class="content">{%block content %} Contenido vacio por defecto {%endblock%}</div> </body> </html>
Defino el bloque title que tiene el valor por defecto “Plantillas en Symfony2” y defino el bloque content.
En las vistas que heredarán de la plantilla puedo llamar a estos bloques en cualquier orden.
{% extends "::plantilla.html.twig" %} {% block content%} <h1>{{listado}}:</h1> {# Bucle en Twig #} {% for post in posts %} {{ post.title }} <br/> {{ post.description }}<hr/> {% endfor %} {%endblock%} {%block title%} Usando plantillas TWIG {%endblock%}
Si dentro de un bloque la instrucción
{{ parent() }}
Lo que haremos será añadir instrucciones al bloque, en lugar de sobreescribir lo que la plantilla base ya tiene.
Más información:
La vista – Symfony2
Documentación oficial de Twig