Перейти к основному содержимому

Все теги

Справочник всех тегов Twig 3.x.

Теги​

apply​

Применяет фильтры к блоку содержимого:

apply
{% apply upper %}
Этот текст станет заглавным
{% endapply %}

{% apply spaceless|escape %}
<div> <p>текст</p> </div>
{% endapply %}

autoescape​

Управляет автоматическим экранированием вывода:

autoescape
{% autoescape 'html' %}
{{ user_input }}
{% endautoescape %}

{% autoescape false %}
{{ trusted_html }}
{% endautoescape %}

block​

Определяет блок, который может быть переопределён в дочернем шаблоне:

block
{% block title %}
Заголовок по умолчанию
{% endblock %}

{# Краткая форма #}
{% block title 'Заголовок по умолчанию' %}

{# Вывод блока по имени #}
{{ block('title') }}

cache​

Кэширует фрагмент шаблона:

cache
{% cache 'sidebar' ttl(300) %}
{# Этот блок кэшируется на 5 минут #}
{% for item in expensive_query %}
{{ item.name }}
{% endfor %}
{% endcache %}

deprecated​

Помечает блок или шаблон как устаревший:

deprecated
{% deprecated 'Шаблон "old.html.twig" устарел, используйте "new.html.twig"' %}

{# С указанием пакета и версии #}
{% deprecated 'Блок "sidebar" устарел' package='my/package' since='2.0' %}

do​

Выполняет выражение без вывода результата:

do
{% do items.append('new') %}
{% do form.setData(data) %}

embed​

Включает шаблон с возможностью переопределения его блоков:

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
{% extends '@site/layout.html.twig' %}

{# Динамическое наследование #}
{% extends ajax ? '@site/layout_ajax.html.twig' : '@site/layout.html.twig' %}
совет

extends должен быть первым тегом в шаблоне.

flush​

Принудительно отправляет буфер вывода клиенту:

flush
{% flush %}

for​

Итерация по коллекции:

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
{% from '@common/macros/forms.html.twig' import input, select as form_select %}

{{ input('name', '') }}
{{ form_select('role', roles) }}

guard​

Защита блока - содержимое отображается только при выполнении условия:

guard
{% guard mw.user is not null %}
<p>Добро пожаловать, {{ mw.user.name }}!</p>
{% endguard %}

if​

Условное выполнение:

if
{% if product.stock > 0 %}
В наличии
{% elseif product.preorder %}
Предзаказ
{% else %}
Нет в наличии
{% endif %}

import​

Импорт макросов из шаблона в переменную:

import
{% import '@common/macros/forms.html.twig' as forms %}

{{ forms.input('email', user.email) }}
{{ forms.textarea('bio', user.bio) }}

include​

Включение другого шаблона:

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
{% 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
{% sandbox %}
{% include 'user_template.html.twig' %}
{% endsandbox %}

set​

Присвоение значения переменной:

set
{% set name = 'World' %}
{% set items = [1, 2, 3] %}
{% set config = {debug: true} %}

{# Блочное присвоение #}
{% set content %}
<p>Многострочное содержимое</p>
{% endset %}

types​

Объявление типов переменных для статического анализа:

types
{% types {
users: 'array',
title: 'string',
page: 'int'
} %}

use​

Горизонтальное переиспользование блоков (traits):

use
{% use 'blocks/sidebar.html.twig' %}
{% use 'blocks/forms.html.twig' with input as form_input %}

verbatim​

Вывод содержимого без обработки Twig:

verbatim
{% verbatim %}
{{ это не будет обработано Twig }}
{% тут тоже нет обработки %}
{% endverbatim %}

with​

Создание новой области видимости:

with
{% with %}
{% set temp = compute() %}
{{ temp }}
{% endwith %}

{% with {name: user.name} only %}
Hello, {{ name }}
{% endwith %}