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

Дата обновления перевода 2024-07-26

Расширения 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_*().

fragment_uri

1
{{ fragment_uri(controller, absolute = false, strict = true, sign = true) }}
controller
type: ControllerReference
absolute (опционально)
type: boolean default: false
strict (опционально)
type: boolean default: true
sign (опционально)
type: boolean default: true

Генерирует URI фрагмента .

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 предоставляет различные реализации отключения кеша через опции конфигурации , +, и .

See also

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

asset_version

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

Возвращает текущую версию пакета, больше информации в .

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, если текущий пользователь имеет заданную роль.

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

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 подключен, то он создаст путь, относительного текушего пути.

See also

Прочтите больше о маршрутизации Symfony и о создании ссылок в шаблонах Twig .

url

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

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

See also

Прочтите больше о маршрутизации Symfony и о создании ссылок в шаблонах Twig .

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

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

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

impersonation_url

1
{{ impersonation_url(identifier) }}
identifier
тип: string

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

impersonation_exit_url

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

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

t  

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

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

importmap

Выводит importmap, а также некоторые другие вещи при использовании компонента Asset.

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

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

Фильтры

humanize

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

Преобразует заданную строку в человекочитаемую строку (заменяя подчеркивания
пробелами, заглавными буквами и т.д.) Это полезно, например, при отображении имен свойств/переменных PHP для конечных пользователей:

1
2
3
4
5
6
{{ 'dateOfBirth'|humanize }}    {# renders: Date of birth #}
{{ 'DateOfBirth'|humanize }}    {# renders: Date of birth #}
{{ 'date-of-birth'|humanize }}  {# renders: Date-of-birth #}
{{ 'date_of_birth'|humanize }}  {# renders: Date of birth #}
{{ 'date of birth'|humanize }}  {# renders: Date of birth #}
{{ 'Date Of Birth'|humanize }}  {# renders: Date of birth #}

trans

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

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

sanitize_html

1
{{ body|sanitize_html(sanitizer = "default") }}
body
тип: string
sanitizer (optional)
тип: string по умолчанию: "default"

Дезинфицирует текст, используя компонент HTML Sanitizer. Больше информации можно найти в HTML Sanitizer .

yaml_encode

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

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

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 по умолчанию.

1
{{ file|file_link(line) }}
file
тип: string
line
тип: integer

Генерирует ссылку на предоставленный файл и на номер строки, используя предварительно сконфигурированную схему.

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

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

Теги

form_theme

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

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

trans

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

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

trans_default_domain

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

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

stopwatch

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

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

Тесты

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

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

app

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