Twig संकलित (compiled) टेम्पलेट्स की डिबगिंग
Twig обычно как работает
По умолчанию Twig шаблонный движок компилирует шаблоны в PHP-код и сохраняет скомпилированный код в памяти. Такой скомпилированный код не удобен для разработки, потому что изменения в Twig-шаблонах не сразу отражаются на сайте Drupal.
После того как Twig закончил с разметкой, в Render API включается дополнительный уровень кеширования. Он берет HTML, сгенерированный Twig, и кэширует его так, что Twig больше не участвует в повторных запросах страницы. Поэтому параметры отладки Twig в этом случае игнорируются.
Очистку кеша можно сделать через интерфейс Drupal, но для разработки удобнее настроить Drupal так, чтобы Twig и Render API вообще ничего не кэшировали.
Настройка Twig и Render API для отладки
Оба уровня — Twig API и Render API — настраиваются отдельно для целей отладки:
1. Twig предоставляет параметры для включения отладки, авто-перезагрузки шаблонов и кэширования скомпилированных шаблонов в файловой системе. Эти параметры можно задать в services.yml.
2. Кэширование Render API настраивается в settings.php сайта.
Разберем оба этапа подробно.
1. Включение отладки Twig
Вы можете сделать это через Drupal Console или вручную.
Отладка через Drupal Console
Сначала установите Drupal Console, затем выполните:
drupal site:mode dev
Эта команда меняет ряд настроек, включая twig.config в sites/default/services.yml:
twig.config: { debug: true }
Результат будет выглядеть примерно так:

Отладка Twig вручную
1. Найдите services.yml (обычно в sites/default/services.yml)
2. Если файла нет, скопируйте default.services.yml и назовите его services.yml
3. Внесите изменения: включите debug, auto_reload и при необходимости кеш
4. Очистите кеш Drupal
Пример:
parameters:
twig.config:
debug: true
Опции Twig
Важно: не используйте их в production!
- debug (по умолчанию false)
При debug: true:
- Каждый шаблон Twig будет окружен HTML-комментариями с подсказками имени файла.
- Эти комментарии ломают автоматические тесты, проверяющие HTML напрямую.
- В Twig можно использовать функцию
dump()для вывода переменных. - Шаблоны Twig перекомпилируются автоматически при изменении (см. auto_reload).
- auto_reload (по умолчанию null)
При auto_reload: true:
- Шаблоны Twig пересобираются при изменении исходного кода.
- Если не указано явно, значение берется из
debug.
- cache (по умолчанию true)
При cache: false:
- Отключается кеш Twig, все шаблоны пересобираются при каждом использовании.
- Это замедляет работу, поэтому обычно достаточно включить auto_reload.
2. Отключение Render API кеша
По умолчанию Drupal кеширует рендеринг блоков и сущностей. Чтобы изменения в Twig-шаблонах применялись сразу, нужно отключить этот кеш.
Для этого добавьте строки в settings.php (или settings.local.php):
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml'; $settings['cache']['bins']['render'] = 'cache.backend.null'; $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
Обычно они уже есть в settings.php, но закомментированы — достаточно раскомментировать.
Готово!
Теперь очистите кеш (через Drush или меню «Конфигурация → Производительность → Очистить все кеши»).
После этого Twig-отладка будет включена: в HTML появятся комментарии о шаблонах, а изменения в Twig будут отображаться сразу.