Дата обновления перевода 2021-09-29

Расширения Twig, определенные Symfony

Twig - это щаблонизатор используемый по умолчанию в приложениях Symfony. Существуют десятки фильтров и функций по умолчанию определенных Twig, но Symfony также определяет некоторые фильтры, функции и теги, для интеграции различных компонентов Symfony с шаблонами Twig. Эта статья разъясняет их все.

Tip

Если этих расширений, предоставленных Symfony, вам недостаточно, вы можете создать пользовательское расширение Twig, чтобы определить еще больше фильтров и функций.

Функции

render

1
{{ render(uri, options = []) }}
uri
тип: string | ControllerReference
options (необязательно)
тип: array по умолчанию: []

Делает запрос к заданному внутреннему URI или контроллеру и возвращает результат. Стратегия отображения может быть указана в ключе опций strategy. Часто используется для встраивания контроллеров в шаблоны.

render_esi

1
{{ render_esi(uri, options = []) }}
uri
type: string | ControllerReference
options (необязательно)
type: array default: []

Похожа на функцию render и определяет те же аргументы. Однако, она генерирует тег ESI когда включена поддержка ESI, или откатывается до поведения render в других случаях.

Tip

Функция render_esi() - это пример шорткат функций render. Она автоматически устанваливает стратегию, основываясь на том, что задано в имени функции, например, render_hinclude() будет использовать стратегию hinclude.js. Это работает для всех функций render_*().

controller

1
{{ controller(controller, attributes = [], query = []) }}
controller
тип: string
attributes (необябазтельно)
тип: array по умолчанию: []
query (необязательно)
тип: array по умолчанию: []

Возвращает экземпляр ControllerReference для использования с функциями вроде render() и render_esi().

asset

1
{{ asset(path, packageName = null) }}
path
тип: string
packageName (необязательно)
тип: string | null по умолчанию: null

Возвращаеn публчный путь заданного пути ресурса (который может быть файлом CSS, JavaScript, путем изображения и т.д.). Эта функция берет во внимание, где установлено приложение (например, в случае, если доступ к проекту происходит через субкаталог хоста) и базовый путь необязательного пакета ресурсов.

Symfony предоставляет различные реализации отключения кеша через опции конфигурации version, +:ref:reference-assets-version-strategy, и json_manifest_path.

See also

Прочтите больше о ссылании на веб-ресурсы из шаблонов.

asset_version

1
{{ asset_version(packageName = null) }}
packageName (необязательно)
тип: string | null по умолчанию: null

Возвращает текущую версию пакета, больше информации в Linking to CSS, JavaScript and Image Assets.

csrf_token

1
{{ csrf_token(intention) }}
intention
тип: string - произвольная строка, используемая для идентификации токена.

Отображает CSRF-токен. Используйте эту функцию, если вы хотите CSRF-защиту, в обычной HTML-форме не управляемой компонентом Symfony Формы.

is_granted

1
{{ is_granted(role, object = null, field = null) }}
role
тип: string
object (необязательно)
тип: object
field (необязательно)
тип: string

Возвращает true, если текущий пользователь имеет заданную роль.

Как вариант, объект может быть передан для использоваия избирателем. Больше информации можно найти в Access Control in Templates.

logout_path

1
{{ logout_path(key = null) }}
key (необязательно)
тип: string

Генерирует относительный URL выхода из системы для заданного брандмауэра. Если не предоставлен ключ, то URL генерируется для текущего брандмауэра, в системе которого находится пользователь.

logout_url

1
{{ logout_url(key = null) }}
key (необязательно)
тип: string

Приравнивается к функции logout_path, но генерирует абсолютный URL, вместо относительного.

path

1
{{ path(name, parameters = [], relative = false) }}
name
тип: string
parameters (необязательно)
тип: array по умолчанию: []
relative (необязательно)
тип: boolean по умолчанию: false

Возвращает относительный URL (без схемы и хоста) для заданного маршрута. Если relative подключен, то он создаст путь, относительного текушего пути.

url

1
{{ url(route_name, route_parameters = [], schemeRelative = false) }}
name
тип: string
parameters (необязательно)
тип: array по умолчанию: []
schemeRelative (необязательно)
тип: boolean по умолчанию: false

Возвращает абсолютный URL (со схемой и хостом) для заданного маршрута. Если schemeRelative подключен, то он создаст URL относительно схемы.

absolute_url

1
{{ absolute_url(path) }}
path
тип: string

Возвращает абсолютный URL (со схемой и хостингом) из переданного относительного пути. Объедините его с функцией asset(), чтобы сгенерировать абсолютные URL для веб-ресурсов. Прочтите больше о Ссылании на ресурсы CSS, JavaScript и изображений.

relative_path

1
{{ relative_path(path) }}
path
тип: string

Возвращает относительный путь из переданного абсолютного URL. Например, представьте, что на следующей странице вашего приложения: http://example.com/products/hover-board.

1
2
3
4
5
{{ relative_path('http://example.com/human.txt') }}
{# ../human.txt #}

{{ relative_path('http://example.com/products/products_icon.png') }}
{# products_icon.png #}

expression

Создаёт Expression связанный с компонентом ExpressionLanguage.

impersonation_exit_path

1
{{ impersonation_exit_path(exitTo = null) }}
exitTo (необязательно)
тип: string

New in version 5.2: Функция impersonation_exit_path() была представлена в Symfony 5.2.

Генерирует URL, который вы можете посетить для выхода из имперсоназии пользователя. После выхода из имперсонации, пользователь перенаправляется по текущему URI. Если вы предпочитаете перенаправление по другому URI, определите его значение в аргументе exitTo.

Если имперсонизация пользователя не проводится, функция возвращает пустую строку.

impersonation_exit_url

1
{{ impersonation_exit_url(exitTo = null) }}
exitTo (необязательно)
тип: string

New in version 5.2: Функция impersonation_exit_url() была представлена в Symfony 5.2.

Похожа на функцию impersonation_exit_path, но генерирует абсолютные URL вместо относительных.

t

1
{{ t(message, parameters = [], domain = 'messages')|trans }}
message
тип: string
parameters (необязательно)
тип: array default: []
domain (необязательно)
тип: string default: messages

New in version 5.2: Функция t() была представлена в Symfony 5.2.

Создает объект Translatable, который может быть передан в фильтр trans.

Функции, связанные с формами

Следующие функции, связанные с Формами Symfony также доступны. Они объясняются в статье о пользовательской настройке отображения форм:

Фильтры

humanize

1
{{ text|humanize }}
text
тип: string

Превращает техническое имя в читаемое человеком (т.е. заменяет нижние подчёркивания пробелами, или трансформирует текст camelCase, вроде helloWorld в hello world, а потом прописывает заглавные буквы в строке).

trans

1
{{ message|trans(arguments = [], domain = null, locale = null) }}
message
тип: string
arguments (необязательно)
тип: array по умолчанию: []
domain (необязательно)
тип: string по умолчанию: null
locale (необязательно)
тип: string по умолчанию: null

New in version 5.2: message принимающая Translatable как валидный тип, была представлена в Symfony 5.2.

Переводит текст на текущий язык. Больше информации в Фильтрах переводов.

yaml_encode

1
{{ input|yaml_encode(inline = 0, dumpObjects = false) }}
input
тип: mixed
inline (необязательно)
тип: integer по умолчанию: 0
dumpObjects (необязательно)
тип: boolean по умолчанию: false

Превращает ввод в синтаксис YAML. См. Writing YAML Files, чтобы узнать больше информации.

yaml_dump

1
{{ value|yaml_dump(inline = 0, dumpObjects = false) }}
value
тип: mixed
inline (необязательно)
тип: integer по умолчанию: 0
dumpObjects (необязательно)
тип: boolean по умолчанию: false

Делает то же самое, что и yaml_encode(), но включает в вывод тип.

abbr_class

1
{{ class|abbr_class }}
class
тип: string

Генерирует элемент <abbr> с коротким именем PHP-класса (FQCN будет отображён в оперативной подсказке, когда пользователь наведёт курсор на элемент).

abbr_method

1
{{ method|abbr_method }}
method
тип: string

Генерирует элемент <abbr>, используя синтаксис FQCN::method(). Если method - Closure, то Closure``будет использован вместо этого,а если ``method не имеет имени класс, то он отображается в виде функции (method()).

format_args

1
{{ args|format_args }}
args
тип: array

Генерирует строку с аргументами и их типами (в рамках элементов <em>).

format_args_as_text

1
{{ args|format_args_as_text }}
args
тип: array

Приравнивается к фильтру format_args, но без использования HTML-тегов.

file_excerpt

1
{{ file|file_excerpt(line, srcContext = 3) }}
file
тип: string
line
тип: integer

srcContext (необязательно)

Генерирует выборку файла кода вокруг заданного числа line. Аргумент srcContext определяет итоговое количество строчек для отображения вокруг заданного числа строчки (используйте -1,чтобы отобразить весь файл).

format_file

1
{{ file|format_file(line, text = null) }}
file
тип: string
line
тип: integer
text (необязательно)
тип: string по умолчанию: null

Генерирует путь файла внутри элемента <a>. Если пусть находится внутри корневого каталога ядра, то путь корневого каталога ядра заменяется на kernel.root_dir (отображая полный путь в оперативной подсказке при наведении курсора).

format_file_from_text

1
{{ text|format_file_from_text }}
text
тип: string

Использует format_file, чтобы улусшить вывод ошибок PHP по умолчанию.

file_relative

1
{{ file|file_relative }}
file
тип: string

Преобразует заданный абсолютный путь файла в новый путь файла относительный к корневому каталогу проекта:

1
2
{{ '/var/www/blog/templates/admin/index.html.twig'|file_relative }}
{# если dir корня проекта - '/var/www/blog/', возвращает 'templates/admin/index.html.twig' #}

Если заданный путь файла находится вне каталога проекта, будет возвращено значение null.

serialize

1
{{ object|serialize(format = 'json', context = []) }}
object
тип: mixed
format (необязательно)
тип: string
context (необязательно)
тип: array

New in version 5.3: Фильтр serialize был представлен в Symfony 5.3.

Принимает любые данные, которые можно сериализовать с помощью компонента Сериализатор и возвращает сериализованную строку в указанном format.

Теги

form_theme

1
{% form_theme form resources %}
form
тип: FormView
resources
тип: array | string

Устанавливает источники так, чтобы переопределять тему формы для заданного экземпляра просмотра формы. Вы можете использовать _self в качестве источников, чтобы установить его в качестве текущего источника. Больше информации в How to Customize Form Rendering.

trans

1
{% trans with vars from domain into locale %}{% endtrans %}
vars (необязательно)
тип: array по умолчанию: []
domain (необязательно)
тип: string по умолчанию: string
locale (необязательно)
тип: string по умолчанию: string

Отображает перевод содержимого. Больше информации в Using Twig Tags.

trans_default_domain

1
{% trans_default_domain domain %}
domain
тип: string

Устанавливает домен по умолчанию в текущем щаблоне.

stopwatch

1
{% stopwatch 'name' %}...{% endstopwatch %}

Засечёт время прогона кода внутри себя и отобразит это во временной шкале WebProfilerBundle.

Тесты

Доступны следующие тесты, связанные с Формами Symfony. Они разъясняются в статье о пользовательской настройке отображения форм:

Глобальные переменные

app

Переменная app доступна везде и предоставляет вам доступ ко многим часто необходимым объектам и значениям. Яляется экземпляром GlobalVariables.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.