Nuevo en la versión 1.12: La función include se añadió en Twig 1.12.
La función include devuelve el contenido producido de una plantilla:
{{ include('template.html') }}
{{ include(some_var) }}
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.
De manera predefinida, el contexto se pasa a la plantilla pero, además, puedes pasar variables adicionales:
{# template.html tendrá acceso a las variables del contexto actual y adicionalmente a las proporcionadas #}
{{ include('template.html', {foo: 'bar'}) }}
Puedes desactivar el acceso al contexto poniendo with_context a false:
{# únicamente la variable foo será accesible #}
{{ include('template.html', {foo: 'bar'}, with_context = false) }}
{# ninguna variable será accesible #}
{{ include('template.html', with_context = false) }}
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));
Cuándo configures la opción ignore_missing, Twig regresará una cadena vacía si la plantilla no existe:
{{ include('sidebar.html', ignore_missing = true) }}
También puedes proporcionar una lista de plantillas para comprobar su existencia antes de la inclusión. La primer plantilla existente será dibujada:
{{ include(['page_detailed.html', 'page.html']) }}
Si configuraste ignore_missing, caerá atrás sin producir nada si ninguna de las plantillas existe, de lo contrario lanzará una excepción.
Cuando incluyas una plantilla creada por un usuario final, debes considerar procesarla en el recinto de seguridad:
{{ include('page.html', sandboxed = true) }}
- template: La plantilla a dibujar
- variables: Las variables por pasar a la plantilla
- with_context: Cuándo pasar las variables del contexto actual o no
- ignore_missing: Cuándo ignorar plantillas omitidas o no
- sandboxed: Cuándo procesar la plantilla en el recinto de seguridad o no