Расширения 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 также доступны. Они объясняются в статье о пользовательской настройке отображения форм:
- form()
- form_start()
- form_end()
- form_widget()
- form_errors()
- form_label()
- form_help()
- form_row()
- form_rest()
- field_name()
- field_value()
- field_label()
- field_help()
- field_errors()
- field_choices()
Фильтры
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 по умолчанию.
file_link
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. Они разъясняются в статье о пользовательской настройке отображения форм:
- selectedchoice()
- rootform()
Глобальные переменные
app
Переменная app
доступна везде и предоставляет вам доступ ко многим
часто необходимым объектам и значениям. Яляется экземпляром
GlobalVariables.