Розширення Twig, визначені Symfony

Дата оновлення перекладу 2022-05-31

Розширення 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
тип: string | ControllerReference
options (не обов'язково)
тип: array за замовчуванням: []

Схожа на функцію 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

Повертає публічний шлях заданого шляху ресурсу (який може бути файлом 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

5.2

Функція impersonation_exit_path() була представлена в Symfony 5.2.

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

Якщо імперсонація користувача не проводиться, функція повертає пустий рядок.

impersonation_exit_url

1
{{ impersonation_exit_url(exitTo = null) }}
exitTo (не обов'язково)
тип: string

5.2

Функція impersonation_exit_url() була представлена в Symfony 5.2.

Схожа на функцію impersonation_exit_path, але генерує абсолютні URL замість відносних.

t  

1
{{ t(message, parameters = [], domain = 'messages')|trans }}
message
тип: string
parameters (не обов'язково)
тип: array за замовчуванням: []
domain (не обов'язково)
тип: string за замовчуванням: messages

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

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. Див. , щоб дізнатися більше інформації.

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

5.3

Фільтр serialize було представлено в Symfony 5.3.

Приймає будь-які дані, які можна сериалізувати за допомогою компонента Сериалізатор та повертає сериалізований рядок у вказаному 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.