J'ai vu pas mal de discussions sur la difficulté de travailler avec kint () du module Devel, car il maximise les limites de la mémoire PHP et fait glisser le navigateur. J'ai entendu quelques réflexions sur l'amélioration de sa vitesse en limitant le nombre de niveaux. Par exemple, dans settings.php, vous pouvez effectuer les opérations suivantes:
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
D'autres moyens d'améliorer la vitesse de kint ()?
theming
8
performance
chrisshattuck
la source
la source
Réponses:
Il existe deux autres façons que d'autres utilisateurs ont mentionnées pour définir les niveaux de sortie maximum en plus de la méthode settings.php mentionnée dans la question, ainsi que quelques autres idées ci-dessous:
Créez un
/modules/contrib/devel/kint/kint/config.php
fichier et ajoutez / modifiez la ligne$_kintSettings['maxLevels'] = 3;
(par @mdrummond sur Slack)Dans une fonction de prétraitement, ajoutez ce qui suit: (par @thpoul sur Slack)
Assurez-vous de ne jamais cliquer sur le
+
signe, qui montre l'arbre entier. Cliquez sur le bloc à la place. Vous pouvez cliquer sur la flèche droite pour ouvrir la sortie dans une nouvelle fenêtre pour une visualisation plus facile (comme lorsque la sortie est dans un bloc). (par @cwightrun sur Slack)Au lieu d'utiliser kint (), créez une fonction de prétraitement et utilisez un débogueur pour explorer les variables. (par @danny_englander sur Slack)
Passez à kint () une variable spécifique au lieu de la faire parcourir l'ensemble de l'arbre ( par @No Sssweat ci-dessous ).
Si vous avez juste besoin de savoir quelles variables existent, vous pouvez simplement afficher les clés en faisant une
{% for key, value in _context %}
boucle ( par @mortendk ci-dessous )la source
kint_require(); Kint::$maxLevels = 3;
dans votre fonction de prétraitement est GOLD . Je vous remercie! Vous permet de définir des niveaux arbitraires selon vos besoins. Il suffit de l'utiliser maintenant pour vider des choses avec 2 niveaux, puis immédiatement après un autre objet avec 5 niveaux.Kint n'est pas la seule bibliothèque que vous pouvez utiliser pour déboguer des variables et des modèles de brindilles.
Je suggère d'utiliser Symfony var-dumper que IMHO est l'une des bibliothèques les plus puissantes pour le débogage de variables. Symfony var-dumper est intégré à la dernière version du module devel (voir ce problème dans la file d'attente des problèmes devel Ajoutez une intégration symfony var-dumper de base )
Pour utilisation var-dumper avec devel
composer require symfony/var-dumper
){{ devel_dump() }}
ou{{ kpr() }}
ou{{ dpm() }}
au lieu de {{kint ()}} pour les variables de débogage dans les modèles de brindillesla source
Voici une autre astuce:
Au lieu d'utiliser
{{ kint() }}
ce qui retournera tout, vous pouvez être plus précis en passant la variable dont vous avez besoin; ainsi, il se chargera plus rapidement.Par exemple: Dans node - [type] .html.twig, vous pouvez passer la variable de contenu à kint:
{{ kint(content) }}
Si vous connaissez le nom du champ, vous pouvez être encore plus précis:
Cela ne renverra que la ou les valeurs du nom du champ.
la source
au lieu d'utiliser kint, vous pouvez faire cette petite astuce au lieu de simplement vous faire une idée de ce qui s'y trouve
node.html.twig
oui, il ne donne pas tout l'amour que le kint veut vous montrer, mais au moins vous sortez les noms, etc.
la source
Lorsqu'il est impossible d'obtenir la vue HTML ou qu'il est trop lent pour charger la sortie kint .
Je vais sérialiser la variable et l'enregistrer avec
\Drupal::logger('custom debug')->notice($string);
Ensuite, je vais le copier sur unserialize.com et choisir l' affichage Krumo ....
la source
L'ajout
$GLOBALS['_kint_settings']['maxLevels'] = 4;
de votre settings.local.php devrait faire l'affaire. N'hésitez pas à modifier le nombre de niveaux ici.la source
$GLOBALS['_kint_settings']['maxLevels']
dans settings.local.php est remplacé par la valeur par défaut dans /modules/contrib/devel/kint/kint/config.php .