Я видел довольно много дискуссий о том, как трудно работать с kint () из модуля Devel, потому что он максимально ограничивает ограничения памяти PHP и делает браузер перетаскиваемым. Я слышал некоторые мысли по улучшению его скорости за счет ограничения количества уровней. Например, в файле settings.php вы можете сделать следующее:
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
Любые другие способы улучшить скорость kint ()?
theming
8
performance
chrisshattuck
источник
источник
Ответы:
Есть два других способа, которые другие пользователи упомянули для установки максимальных уровней вывода в дополнение к методу settings.php, упомянутому в вопросе, а также пару других идей ниже:
Создайте
/modules/contrib/devel/kint/kint/config.php
файл и добавьте / измените строку$_kintSettings['maxLevels'] = 3;
(автор @mdrummond на Slack)В функцию предварительной обработки добавьте следующее: (@thpoul на Slack)
Никогда не нажимайте на
+
знак, который показывает все дерево. Вместо этого нажмите на блок. Вы можете щелкнуть стрелку вправо, чтобы открыть вывод в новом окне для более удобного просмотра (например, когда вывод находится в блоке). (автор @cwightrun в Slack)Вместо использования kint () создайте функцию предварительной обработки и используйте отладчик для исследования переменных. (автор @danny_englander в Slack)
Передайте kint () определенную переменную вместо того, чтобы заставить ее катиться по всему дереву ( @No Sssweat ниже ).
Если вам просто нужно знать, какие переменные существуют, вы можете просто просмотреть ключи, выполнив
{% for key, value in _context %}
цикл (см . @Mortendk ниже )источник
kint_require(); Kint::$maxLevels = 3;
в вашей предварительной обработке функция ЗОЛОТА . Спасибо! Позволяет вам устанавливать произвольные уровни по мере необходимости. Просто используйте его сейчас, чтобы выбросить вещи с 2 уровнями, а затем сразу же после этого сбросить другой объект с 5 уровнями.Kint - не единственная библиотека, которую вы можете использовать для отладки переменных и шаблонов веток.
Я предлагаю использовать Symfony var-dumper, который IMHO является одним из самых мощных библиотек для отладки переменных. Symfony var-dumper интегрирован с последней версией модуля devel (см. Эту проблему в очереди вопросов devel. Добавьте базовую интеграцию с Symfony var-dumper ).
Для использования вар-самосвал с devel
composer require symfony/var-dumper
){{ devel_dump() }}
или{{ kpr() }}
или{{ dpm() }}
вместо {{kint ()}} для отладочных переменных в шаблонах ветокисточник
Вот еще один совет:
Вместо использования
{{ kint() }}
которого будет возвращаться все, вы можете быть более конкретным, передавая необходимую переменную; Таким образом, он будет загружаться быстрее.Например: В node - [type] .html.twig вы можете передать переменную содержимого в kint:
{{ kint(content) }}
Если вы знаете название поля, вы можете быть еще более конкретным:
Это вернет только значение (я) имени поля.
источник
вместо того, чтобы использовать kint, вы можете сделать этот маленький трюк вместо того, чтобы просто понять, что там
node.html.twig
да, это не дает всей любви, которую хочет показать вам Кинт, но, по крайней мере, вы получаете имена и т.д.
источник
Когда невозможно получить представление HTML или слишком медленно загружать вывод kint .
Я буду сериализовать переменную и сохранить ее с
\Drupal::logger('custom debug')->notice($string);
Затем я скопирую его на unserialize.com и выберу Krumo display ....
источник
Добавление
$GLOBALS['_kint_settings']['maxLevels'] = 4;
в settings.local.php должно помочь. Не стесняйтесь менять количество уровней здесь.источник
$GLOBALS['_kint_settings']['maxLevels']
в settings.local.php перезаписывается значением по умолчанию в /modules/contrib/devel/kint/kint/config.php .