Як я можу зробити так, щоб kint () швидше завантажувався під час налагодження шаблонів гілочок?


15

Я бачив досить багато дискусій щодо того, як з kint () з модуля Devel важко працювати, оскільки він збільшує межі пам'яті PHP і змушує браузер перетягувати. Я чув деякі думки щодо вдосконалення його швидкості шляхом обмеження кількості рівнів. Наприклад, у settings.php ви можете зробити наступне:

require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;

Будь-які інші способи поліпшити швидкість kint ()?


1
Проблема продуктивності викликана тим, що D8 є OOP, тож зараз є необхідний показ даних. Тому я не бачу, як це може стати кращим, оскільки це JS, який реально надає всі ці структуровані дані.

Відповіді:


23

Є два інші способи, які інші користувачі вказали для встановлення максимальних рівнів виходу на додаток до методу settings.php, згаданого у запитанні, а також ще кілька ідей нижче:

  1. Створіть /modules/contrib/devel/kint/kint/config.phpфайл та додайте / змініть рядок $_kintSettings['maxLevels'] = 3;(автор: @mdrummond on Slack)

  2. У функцію попередньої обробки додайте наступне: (від @thpoul на Slack)

    kint_require();
    Kint::$maxLevels = 3;
    
  3. Не забудьте ніколи натискати +знак, який показує все дерево. Клацніть замість цього блоку. Ви можете натиснути стрілку праворуч, щоб відкрити вихід у новому вікні для легшого перегляду (наприклад, коли вихід знаходиться в блоці). (автор @cwightrun на Slack)

  4. Замість використання kint () створіть функцію попередньої обробки та використовуйте відладчик для дослідження змінних. (автор @danny_englander на Slack)

  5. Передайте kint () певну змінну, а не примушуйте її прокручувати все дерево ( від @No Sssweat нижче ).

  6. Якщо вам просто потрібно знати, які існують змінні, ви можете просто переглянути клавіші, зробивши {% for key, value in _context %}цикл ( автор @mortendk нижче )


Слід також додати відповідь Кейсі звідси: drupal.stackexchange.com/a/214713/28813
Ерік

1
"Не забудьте ніколи натискати знак +, який показує все дерево" - Дякую! Я натискав знак "плюс", тому що, ну, це символ для розширення. Тепер я знаю :-)
tanc

kint_require(); Kint::$maxLevels = 3;у вашій функції попередньої обробки GOLD . Дякую! Дозволяє встановлювати довільні рівні за потребою. Просто використовуйте його зараз для скидання матеріалів з 2-х рівнів, а потім одразу після цього скидання іншого об’єкта на 5 рівнів.
Чи буде

6

Kint - не єдина бібліотека, яку можна використовувати для налагодження змінних і шаблонів гілочок.

Я пропоную використовувати вакуум-самоскид Symfony, що IMHO є однією з найпотужніших ліб для налагодження змінних. Symfony var-dumper інтегрований з останньою версією модуля devel (див. Цю проблему у черзі випуску devel Додайте базову інтеграцію варі-самоскидів symfony )

Для використання вар-самоскид з devel

  • завантажити та встановити модуль розробки
  • встановити var-dumper через composer ( composer require symfony/var-dumper)
  • перейдіть на сторінку налаштувань devel і встановіть var-dumper як самоскид за замовчуванням
  • використовувати {{ devel_dump() }}або {{ kpr() }}чи {{ dpm() }}замість {{Kint ()}} для налагодження змінних в шаблонах прута

2

Ось ще одна порада:

Замість використання {{ kint() }}якого поверне все, ви можете бути більш конкретними, передавши потрібну вам змінну; таким чином, він завантажиться швидше.

Наприклад: У node - [type] .html.twig ви можете передати змінну вмісту kint:

{{ kint(content) }}

Якщо ви знаєте назву поля, ви можете бути ще більш конкретними:

{{ kint(content.field_name['#items'].getValue()) }}

Це поверне лише значення (ів) імені поля.


2

замість використання kint, ви можете зробити цей маленький трюк, а не просто зрозуміти, що там є

node.html.twig

<ol>
{% for key, value in _context  %}
<li>{{ key }} </li>
 {% if loop.index == 2 %}}
    <pre>{{ dump( value ) }}</pre>
{% endif %}
{% endfor %}
</ol>

так, це не дає всієї любові, яку хоче показати тобі Кінт, але принаймні ти отримаєш імена тощо


0

Коли неможливо отримати перегляд HTML або занадто повільно завантажувати вихідний файл kint .

Я серіалізую змінну і збережу її

\Drupal::logger('custom debug')->notice($string);

Тоді я буду копіювати його unserialize.com і вибрати Krumo дисплей ....


Я просто хочу, щоб Крумо для D8
Фелікс Єва

-2

Додавання $GLOBALS['_kint_settings']['maxLevels'] = 4;у your settings.local.php повинно зробити трюк. Не соромтеся змінювати кількість рівнів тут.


3
Це не працює для мене в Drupal 8.2, оскільки $GLOBALS['_kint_settings']['maxLevels']в settings.local.php перезаписується значенням за замовчуванням у /modules/contrib/devel/kint/kint/config.php .
Філіп Майкл

Так, config.default.php не має сенсу, що він замінить усе, що ви ставите як $ GLOBALS, тому ви можете або змінити його в kint config, або видалити це значення в config та поставити його як глобальне, щоб воно працювало.
Марко Блажекович
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.