• урок
  • pantey

Режим отладки в Drupal 8

18.05.2016

В новой ветке нашей любимой CMF режим отладки несколько изменился. Если в 7ке нам достаточно было отключить кеширование из админ панели и можно было дальше смело дебажить все наши наработки, то теперь от кеширования так «просто» не избавиться. Этим мы сейчас с вами и займемся.

Отключаем кеширование

Итак, у нас есть чистая установка Drupal 8, со стандартной темой Bartik активированной по умолчанию. Первое, что нам необходимо сделать – это убедиться, что кеширование в админке сайта у нас отключено. Идем по пути Конфигурация -> Производительность:

Убедились, что кеширование отключено

И в пункте «Кеширование» выбираем «Не кешировать».

Далее приступаем к более интересному моменту, а именно к файлам конфигурации. Нам нужно скопировать файл

  1. example.settings.local.php

который, находится в корне папки /sites на вашем сервере, в корень папки /sites/default и переименовать его в

  1. settings.local.php

Данный файл определяет параметры при разработке вашего сайта. В данном файле ищем запись вида:

  1. # $settings['cache']['bins']['render'] = 'cache.backend.null';

Которую, собственно нам нужно разкомментировать (удалить решетку # в начале записи).

Теперь открываем файл

  1. settings.php

и ищем запись вида

  1. # if (file_exists(__DIR__ . '/settings.local.php')) {
  2. # include __DIR__ . '/settings.local.php';
  3. # }

Которую также нужно разкоментировать. Данная запись говорит о том, что если существует файл settings.local.php, то подключить его.

Хочу заменить, если после указанных манипуляций вы получаете сообщение о непредвиденной ошибке, то запустите файл rebuild.php, он перестроит ваши параметры сайта.

Включаем отладку шаблонизатора Twig

Открываем файл

  1. development.services.yml

который, находится в корне папки /sites и дописываем следующую запись:

  1. parameters:
  2. twig.config:
  3. debug: true
  4. auto_reload: true
  5. cache: false

Список дополнительных параметров вы можете найти в файле default.services.yml, который находится в корне /sites/default

После чего чистим кеш сайта и наблюдаем результат:

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

Отладка переменных внутри шаблонов Twig

Для отладки переменных внутри Twig шаблонов, можно использовать

  1. {{ dump(variable) }}

Например {{ dump(page) }} - для отладки внутри page.htm.twig или с использованием Devel, который приобрел PHP отладчик – Kint.

  1. {{ kint(page) }}
PHP отладчик Kint

Более подробно о Kint вы можете прочитать здесь.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (6)

Profile picture for user Алексей
Александр
01.03.2018

Здравствуйте!

Столкнулся с такой проблемой:

Поднял drupal 8 локально, на windows, веб сервер laragon,
но так-же поднимал на сервере хостинга, проблема такая-же, по этому не думаю что дело в "железе".
(но на всякий случай конфигурация: amd FX 6200 4300mgz, 8 gb оперативной, ssd диск.)

Когда включаю отладку twig и устанавливаю "cache: false", сайт и локально и на хостинге "ложится".

Ошибка "PHP: Fatal Error: Allowed Memory Size".
 

На локальной машине, в настройках php указал memory_limit - 4 гигабайта.

Но это не помогло, ошибка не выдается но и сайт не грузится, т.е. просто белое окно и бесконечная загрузка, при этом потребление памяти у сервера в этот момент резко летит вверх и пока сервер не перезагрузишь сайт висит.

 

Если же "cache: true"  сайт грузится но понятное дело, для разработки это не подойдет, не очень весело каждый раз  кликать очищать кэш при внесении изменений.

Есть ли какой-то способ заставить drupal 8 нормально работать в режиме разработки?

 

И еще похожий вопрос когда использую kint в ноде ( допустим в списке статей ). 

В twig шаблоне или в хуке ноды выводишь содержимое " kint($variables); "

Если статья одна на странице то все нормально, но если статей хотя-бы 3 то все начинает либо дико тормозить, либо опять-же перестает грузиться страница.

Временно это решается уменьшением глубины отображения в конфигах kint, но опять-же как заставить его нармально работать? Неужели там НАСТОЛЬКО много данных тянется что даже браузер виснет?

 

Много текста получилось, но пока все это не позволяет использовать drupal 8, а хочется...

Можете что-либо подсказать по этой теме?

 

Profile picture for user pantey
pantey
01.03.2018

После внесений изменений отладки - запустите rebuild.php.

Kint - это его свойство, он действительно очень много всего тянет, но в этом есть и огромный плюс, сразу понятно откуда, что приходит.

Profile picture for user Алексей
Александр
01.03.2018

Как вывести доп. поле телефон в кастомном блоке в шаблоне блока именно в шаблоне блока, не ноды и т.п. block.html.twig

 

{{ content.field_telefon[value] }}
{{ content.field_telefon[0] }}

{{ content.field_telefon }}

Никакой из вариантов не работает.

Profile picture for user pantey
pantey
01.03.2018

так поле у ноды было создано ? или у блока ?

Profile picture for user Алексей
Александр
04.03.2018

У блока
Кстати уже сам решил вопрос:
{{ content['#block_content'].field_telefon.value }}

Кстати другая проблема, почему то Drupal 8 жутко тормозит на хосте, при этом drupal 7 Летает. 
PHP 7 стоит, друпал не ругается, что есть проблемы.
Очень не комфортно и долго работать с тормозами такими, когда страница грузится по несколько секунд. Можете какие то догадки пожалуйста написать, я попробую проверить у себя. А то подобной проблемы в инете не нахожу(

Profile picture for user pantey
pantey
04.03.2018

network браузера и дебагер devel - смотрите логи и найдете причину думаю. Так сложно сказать