include
Указание include включает шаблон и выводит отрендеренное содержимое этого файла:
{% include 'header.html' %}
Body
{% include 'footer.html' %}
Примечание
Рекомендуется использовать функцию include вместо этого, так как она предоставляет те же функции с большей гибкостью:
-
Функция
includeявляется более «правильной» с точки зрения семантики (включение шаблона выводит его отрендеренное содержимое в текущей области видимости; тег не должен отображать ничего); -
Функция
includeболее «сочетаема»:{# Store a rendered template in a variable #} {% set content %} {% include 'template.html' %} {% endset %} {# vs #} {% set content = include('template.html') %} {# Apply filter on a rendered template #} {% apply upper %} {% include 'template.html' %} {% endapply %} {# vs #} {{ include('template.html')|upper }}
-
Функция
includeне накладывает никаких конкретных требований к порядку аргументов благодаря именованным аргументам.
Включенные шаблоны имеют доступ к переменным активного контекста.
Если вы используете загрузчик файловой системы, шаблоны ищутся в путях, определённых им.
Вы можете добавить дополнительные переменные, передав их после ключевого слова %%%CODE_BLOCK_6%%:
{# template.html will have access to the variables from the current context and the additional ones provided #}
{% include 'template.html' with {'foo': 'bar'} %}
{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}
Вы можете отключить доступ к контексту, добавив ключевое слово %%%CODE_BLOCK_8%%:
{# only the foo variable will be accessible #}
{% include 'template.html' with {'foo': 'bar'} only %}
{# no variables will be accessible #}
{% include 'template.html' only %}
Подсказка
При включении шаблона, созданного конечным пользователем, следует рассмотреть возможность его песочницы. Более подробная информация в главе Twig для разработчиков и в документации тега sandbox.
Имя шаблона может быть любым допустимым выражением Twig:
{% include some_var %}
{% include ajax ? 'ajax.html' : 'not_ajax.html' %}
И если выражение вычисляется в \Twig\Template или \Twig\TemplateWrapper экземпляр, Twig будет использовать его непосредственно:
// {% include template %}
$template = $twig->load('some_template.twig');
$twig->display('template.twig', ['template' => $template]);
Вы можете отметить включение с помощью %%%CODE_BLOCK_15%%, в этом случае Twig проигнорирует указание, если включаемый шаблон не существует. Он должен быть размещён сразу после имени шаблона. Вот некоторые корректные примеры:
{% include 'sidebar.html' ignore missing %}
{% include 'sidebar.html' ignore missing with {'foo': 'bar'} %}
{% include 'sidebar.html' ignore missing only %}
Вы также можете предоставить список шаблонов, которые проверяются на существование перед включением. Первый существующий шаблон будет включён:
{% include ['page_detailed.html', 'page.html'] %}
Если ignore missing указано, в случае отсутствия существующих шаблонов будет возвращено пустое отображение, в противном случае будет выброшено исключение.
© 2009–2018 by the Twig Team
Licensed under the three clause BSD license.
The Twig logo is © 2010–2020 Symfony
https://twig.symfony.com/doc/3.x/tags/include.html