Як автоматично впрповаджувати змінні у всі шаблони

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

Як автоматично впрповаджувати змінні у всі шаблони

Twig дозволяє автоматичне впровадження однієї або більше змінних у всі шаблони. Ці глобальні змінні визначаються в опції twig.globals всередині головного файлу конфігурації Twig:

  • YAML
  • XML
  • PHP
1
2
3
4
5
# config/packages/twig.yaml
twig:
    # ...
    globals:
        ga_tracking: 'UA-xxxxx-x'

Тепер змінна ga_tracking доступна у всіх шаблонах Twig, тому ви можете використовувати її без необхідності її чіткої передачі з контролера або сервісу, що відображує шаблон:

1
<p>The google tracking code is: {{ ga_tracking }}</p>

Посилання на сервіси

На додаток до статичних значень, глобальні зммінні Twig також можуть посилатися на сервіси з сервіс-контейнера. Основним недоліком є те, що ці сервіси не підлягають лінивому завантаженню. Іншими словами, як тільки завантажується Twig, ваш сервіс існтанціюється, навіть якщо ви взагалі не використовуєте цю глобальну змінну.

Щоб визначити сервіс в якості глобальної змінної Twig, додайте до рядку ID сервісу префікс, який починається з символу @, що є звичайним синтаксисом для посилання на сервіси у параметрах контейнера :

  • YAML
  • XML
  • PHP
1
2
3
4
5
6
# config/packages/twig.yaml
twig:
    # ...
    globals:
        # значення - id сервісу
        uuid: '@App\Generator\UuidGenerator'

Тепер ви можете використати змінну uuid у будь-якому шаблоні Twig, щоб отримати доступ до сервісу UuidGenerator:

1
UUID: {{ uuid.generate }}