twig

Отладка Twig шаблонов

При отладке переменных в Twig шаблоне нужно учитывать некоторые особенности шаблонизатора. Во-первых, Twig не позволит вам вызывать php функции, которые вы могли использовать при отладке php шаблонов: var_dump(), print_r(), dpm() (функция модуля devel) и другие. Привычная отладка с помощью xdebug в файлах twig шаблонов тоже недоступна. Во-вторых, шаблоны Twig компилируются в php файлы, которые кешируются в файловой системе (в Drupal 8 файлы хранятся в каталоге sites/default/files/php/twig). И после установки Drupal 8 отладочные функции twig будут недоступны, также вы не увидите изменений сделанных в шаблоне до очистки кеша (кеш в Drupal 8 с помощью drush чистится командой drush cr).

Twig функции

Twig в своих шаблонах не позволяет вызывать php функции. Взамен этого шаблонизатор создает свои собственные функции. Как и в случае с Twig фильтрами, twig обладает определенным набором встроенных функций, к которым Drupal 8 добавляет свои специфичные Twig функции. Любой разработчик в случае необходимости может добавить свою собственную twig функцию. Для вызова функции в twig шаблоне ее достаточно обернуть в двойные фигурные скобки и передать в нее все необходимые аргументы:


{{ function(arg1, arg2, ...) }}

Twig фильтры

Для вывода переменной в Twig шаблоне ее достаточно заключить в двойные парные фигурные кавычки {{ var }}. Если же переменную перед выводом нужно изменить (модифицировать), то для этого предусмотрены Twig фильтры. Фильтры отделяются от переменной символом | и могут опционально принимать аргументы. К одной переменной можно применить несколько фильтров, которые будут применены последовательно в порядке их указания. Абстрактный пример применения фильтров выглядит так:


{{ var|filter1(arg1, arg2)|filter2 }}

Twig шаблонизатор имеет большой набор фильтров "на все случаи жизни", но и Drupal тоже добавляет свои специфичные фильтры.

Twig теги

В этой статье рассмотрим Twig теги - конструкции шаблонизатора, которые выполняют разнообразные задачи, такие как: условные операторы, циклы, экранирование данных, создание макросов, использование наследования шаблонов, запись в переменные и многое другое. В общем виде они записываются с помощью открывающего тега и закрывающего (именуется префиксом end). Закрывающий тег нужен не для всех конструкций. Пример абстрактного тега выглядит так:


{% tag %} {% endtag %}

Twig: Введение

В Drupal 8 на замену PHPTemplate пришел шаблонизатор Twig - "компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Armin Ronacher написал Twig в 2008 году для платформы блогов Chyrp. Он больше не возвращался к разработке и в большей степени занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, первый из которых также создан Ронакером. Идею данного шаблонизатора развивает и поддерживает Fabien Potencier, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию." (https://ru.wikipedia.org/wiki/Twig).