Все теги
Справочник всех тегов Twig 3.x.
Теги
apply
Применяет фильтры к блоку содержимого:
{% apply upper %}
Этот текст станет заглавным
{% endapply %}
{% apply spaceless|escape %}
<div> <p>текст</p> </div>
{% endapply %}
autoescape
Управляет автоматическим экранированием вывода:
{% autoescape 'html' %}
{{ user_input }}
{% endautoescape %}
{% autoescape false %}
{{ trusted_html }}
{% endautoescape %}
block
Определяет блок, который может быть переопределён в дочернем шаблоне:
{% block title %}
Заголовок по умолчанию
{% endblock %}
{# Краткая форма #}
{% block title 'Заголовок по умолчанию' %}
{# Вывод блока по имени #}
{{ block('title') }}
cache
Кэширует фрагмент шаблона:
{% cache 'sidebar' ttl(300) %}
{# Этот блок кэшируется на 5 минут #}
{% for item in expensive_query %}
{{ item.name }}
{% endfor %}
{% endcache %}
deprecated
Помечает блок или шаблон как устаревший:
{% deprecated 'Шаблон "old.html.twig" устарел, используйте "new.html.twig"' %}
{# С указанием пакета и версии #}
{% deprecated 'Блок "sidebar" устарел' package='my/package' since='2.0' %}
do
Выполняет выражение без вывода результата:
{% do items.append('new') %}
{% do form.setData(data) %}
embed
Включает шаблон с возможностью переопределения его блоков:
{% embed '@common/components/card.html.twig' %}
{% block header %}Мой заголовок{% endblock %}
{% block body %}Моё содержимое{% endblock %}
{% endembed %}
{# С переменными #}
{% embed '@common/components/card.html.twig' with {class: 'primary'} %}
{% block body %}Содержимое{% endblock %}
{% endembed %}
extends
Наследование от родительского шаблона:
{% extends '@site/layout.html.twig' %}
{# Динамическое наследование #}
{% extends ajax ? '@site/layout_ajax.html.twig' : '@site/layout.html.twig' %}
extends должен быть первым тегом в шаблоне.
flush
Принудительно отправляет буфер вывода клиенту:
{% flush %}
for
Итерация по коллекции:
{% for user in users %}
{{ user.name }}
{% else %}
Список пуст.
{% endfor %}
{# С ключами #}
{% for key, value in items %}
{{ key }}: {{ value }}
{% endfor %}
{# С фильтрацией #}
{% for user in users if user.active %}
{{ user.name }}
{% endfor %}
from
Импорт конкретных макросов из шаблона:
{% from '@common/macros/forms.html.twig' import input, select as form_select %}
{{ input('name', '') }}
{{ form_select('role', roles) }}
guard
Защита блока - содержимое отображается только при выполнении условия:
{% guard mw.user is not null %}
<p>Добро пожаловать, {{ mw.user.name }}!</p>
{% endguard %}
if
Условное выполнение:
{% if product.stock > 0 %}
В наличии
{% elseif product.preorder %}
Предзаказ
{% else %}
Нет в наличии
{% endif %}
import
Импорт макросов из шаблона в переменную:
{% import '@common/macros/forms.html.twig' as forms %}
{{ forms.input('email', user.email) }}
{{ forms.textarea('bio', user.bio) }}
include
Включение другого шаблона:
{% include '@site/partials/header.html.twig' %}
{# С переменными #}
{% include '@common/components/alert.html.twig' with {
type: 'success',
message: 'Сохранено!'
} %}
{# Без родительского контекста #}
{% include 'template.html.twig' with {var: 'value'} only %}
{# Игнорировать, если не найден #}
{% include 'optional.html.twig' ignore missing %}
macro
Определение переиспользуемого макроса:
{% macro button(label, type, attrs) %}
{% set type = type|default('button') %}
<button type="{{ type }}"
{% for key, val in attrs|default({}) %}
{{ key }}="{{ val }}"
{% endfor %}
>{{ label }}</button>
{% endmacro %}
sandbox
Выполняет включённый шаблон в песочнице с ограниченным набором тегов, фильтров и функций:
{% sandbox %}
{% include 'user_template.html.twig' %}
{% endsandbox %}
set
Присвоение значения переменной:
{% set name = 'World' %}
{% set items = [1, 2, 3] %}
{% set config = {debug: true} %}
{# Блочное присвоение #}
{% set content %}
<p>Многострочное содержимое</p>
{% endset %}
types
Объявление типов переменных для статического анализа:
{% types {
users: 'array',
title: 'string',
page: 'int'
} %}
use
Горизонтальное переиспользование блоков (traits):
{% use 'blocks/sidebar.html.twig' %}
{% use 'blocks/forms.html.twig' with input as form_input %}
verbatim
Вывод содержимого без обработки Twig:
{% verbatim %}
{{ это не будет обработано Twig }}
{% тут тоже нет обработки %}
{% endverbatim %}
with
Создание новой области видимости:
{% with %}
{% set temp = compute() %}
{{ temp }}
{% endwith %}
{% with {name: user.name} only %}
Hello, {{ name }}
{% endwith %}