Расширения Symfony Twig

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

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

Tip

Технически, большинство расширений живут в Twig Bridge. Этот код может дать вам некоторые идеи для времени, когда вам нужно будет писать собственное расширение Twig, как описано в How to Write a custom Twig Extension.

Note

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

Tip

Хранилище расширений Twig содержит некоторые дополнительные расширения Twig, которые не принадлежат ядру Twig, так что вам стоит посмотреть на Документацию расширений Twig.

Функции

render

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

Отображает фрагмент для заданного контроллера (используя функцию controller) или URI. Чтобы узнать больше, см. How to Embed Controllers in a Template.

Стратегия отображения может быть указана в ключе опций strategy.

Tip

URI может быть сгенерирован другими функциями, например, path и url.

render_esi

1
{{ render_esi(uri, options = []) }}
uri
type: string | ControllerReference
options (optional)
type: array default: []

Генерирует ESI-тег по возможности, или вместо этого откатывается до поведения функции render. Чтобы узнать больше, см. How to Embed Controllers in a Template.

Tip

URI может быть сгенерирован другими функциями, например, path и url.

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

Возвращаеь публчный путь к path, который берёт во внимание базовый набор путей пакета и путь URL. Больше информации в Linking to Assets. Symfony предоставляет различные реализации отключения кеша через опции конфигурации version, +:ref:reference-assets-version-strategy, и json_manifest_path.

asset_version

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

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

form

1
{{ form(view, variables = []) }}
view
тип: FormView
variables (необязательно)
тип: array по умолчанию: []

Отображает HTML полной формы, больше информации в справочнике форм Twig.

form_start

1
{{ form_start(view, variables = []) }}
view
тип: FormView
variables (необязательно)
тип: array по умолчанию: []

Отображает стартовый HTML-тег формы, больше информации в справочнике форм Twig.

form_end

1
{{ form_end(view, variables = []) }}
view
тип: FormView
variables (необязательно)
тип: array по умолчанию: []

Отображает конечный HTML-тег формы вместе со всеми полями, которые ещё не были отображены, больше информации в справочнике форм Twig.

form_widget

1
{{ form_widget(view, variables = []) }}
view
тип: FormView
variables (необязательно)
тип: array по умолчанию: []

Отображает полную форму или определённый HTML-виджет поле, больше информации в справочнике форм Twig.

form_errors

1
{{ form_errors(view) }}
view
тип: FormView

Отображает все ошибки заданного поля или глобальные ошибки, больше информации в справочнике форм Twig.

form_label

1
{{ form_label(view, label = null, variables = []) }}
view
тип: FormView
label (необязательно)
тип: string по умолчанию: null
variables (необязательно)
тип: array по умолчанию: []

Отображает ярлык заданного поля, больше информации в справочнике форм Twig.

form_row

1
{{ form_row(view, variables = []) }}
view
тип: FormView
variables (необязательно)
тип: array по умолчанию: []

Отображает строку (ярлык поля, ошибки и виджет) заданного поля, больше информации в справочнике форм Twig.

form_rest

1
{{ form_rest(view, variables = []) }}
view
тип: FormView
variables (необязательно)
тип: array по умолчанию: []

Отображает все поля, которые ещё не были отображены, больше информации в справочнике форм Twig.

csrf_token

1
{{ csrf_token(intention) }}
intention
тип: string

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

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 подключен, то он создаст путь, относительного текушего пути. Больше информации в Linking to Pages.

Прочтите Routing, чтобы узнать больше о компоненте Маршрутизации.

url

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

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

Прочтите Routing, чтобы узнать больше о компоненте Маршрутизации.

absolute_url

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

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

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

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

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 в Twig. См. "Template Expressions".

Фильтры

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

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

transchoice

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

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

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

Теги

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

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

transchoice

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

Отображает перевод содержимого с поддержкой плюрализации, больше информации в Twig Templates.

trans_default_domain

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

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

stopwatch

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

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

Тесты

selectedchoice

1
{% if choice is selectedchoice(selectedValue) %}
choice
тип: ChoiceView
selectedValue
тип: string

Проверяет, был ли selectedValue проверен на предоставленное поле выбора. Использоваие этого теста является наиболее эффективным.

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

app

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

Доступные атрибуты:

  • app.user, PHP-объект, представляющий текущего пользователя;
  • app.request, объект :class:Symfony\\Component\\HttpFoundation\\Request;
  • app.session, объект :class:Symfony\\Component\\HttpFoundation\\Session\\Session;
  • app.environment, строка с именем окружения выполнения;
  • app.debug, булево значение, сообщающее, включен ли в приложении режим отладки;
  • app.token, объект TokenInterface, представляющий токен безопасности
  • app.flashes, возвращает флеш-сообщения из сессии

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