include

La declaración include inserta una plantilla y devuelve el contenido presentado por ese archivo en el espacio de nombres actual:

{% include 'header.html' %}
    Body
{% include 'footer.html' %}

Las plantillas incluidas tienen acceso a las variables del contexto activo.

Si estás utilizando el cargador del sistema de archivos, las plantillas se buscan en la ruta definida por este.

Puedes añadir variables adicionales pasándolas después de la palabra clave with:

{# template.html tendrá acceso a las variables del contexto actual y adicionalmente a las proporcionadas #}
{% include 'template.html' with {'foo': 'bar'} %}

{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}

Puedes desactivar el acceso al contexto añadiendo la palabra clave only:

{# únicamente la variable foo será accesible #}
{% include 'template.html' with {'foo': 'bar'} only %}
{# ninguna variable será accesible #}
{% include 'template.html' only %}

Truco

Cuando incluyes una plantilla creada por un usuario final, debes considerar supervisarla. Más información en el capítulo Twig para desarrolladores y en la documentación de la etiqueta sandbox.

El nombre de la plantilla puede ser cualquier expresión Twig válida:

{% include some_var %}
{% include ajax ? 'ajax.html' : 'not_ajax.html' %}

Y si la expresión evalúa como un objeto Twig_Template, Twig la usará directamente:

// {% include template %}

$template = $twig->loadTemplate('some_template.twig');

$twig->loadTemplate('template.twig')
     ->display(array('template' => $template));

Nuevo en la versión 1.2: La característica ignore missing se añadió en Twig 1.2.

Puedes marcar un include con ignore missing en cuyo caso Twig omitirá la declaración si la plantilla a ignorar no existe. Se tiene que colocar justo después del nombre de la plantilla. He aquí algunos ejemplos válidos:

{% include 'sidebar.html' ignore missing %}
{% include 'sidebar.html' ignore missing with {'foo': 'bar'} %}
{% include 'sidebar.html' ignore missing only %}

Nuevo en la versión 1.2: La posibilidad de pasar un arreglo de plantillas se añadió en Twig 1.2.

También puedes proporcionar una lista de plantillas para comprobar su existencia antes de la inclusión. La primer plantilla existente será incluida:

{% include ['page_detailed.html', 'page.html'] %}

Si se le da ignore missing, caerá de nuevo en reproducir nada si ninguna de las plantillas existe, de lo contrario se producirá una excepción.

Bifúrcame en GitHub