J'ai vu pas mal de discussions sur la difficulté de travailler avec kint () du module Devel, car il maximise PHP limite de mémoire et fait glisser le navigateur. J'en ai entendu 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 ()?
Il y a 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éer un /modules/contrib/devel/kint/kint/config.php
fichier et ajouter/modifier la ligne $_kintSettings['maxLevels'] = 3;
(par @mdrummond sur Slack)
Dans une fonction de prétraitement, ajoutez ce qui suit: (par @thpoul sur Slack)
kint_require();
Kint::$maxLevels = 3;
Assurez-vous de ne jamais cliquer sur +
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 un {% for key, value in _context %}
boucle ( par @mortendk ci-dessous )
Kint n'est pas la seule bibliothèque que vous pouvez utiliser pour déboguer des variables et des modèles twig.
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 Ajouter 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 twigVoici une autre astuce:
Au lieu d'utiliser {{ kint() }}
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:
{{ kint(content.field_name['#items'].getValue()) }}
Cela ne renverra que la ou les valeurs du nom du champ.
au lieu d'utiliser kint, vous pouvez faire cette petite astuce au lieu de simplement avoir une idée de ce qui s'y trouve
node.html.twig
<ol>
{% for key, value in _context %}
<li>{{ key }} </li>
{% if loop.index == 2 %}}
<pre>{{ dump( value ) }}</pre>
{% endif %}
{% endfor %}
</ol>
oui, il ne donne pas tout l'amour que le kint veut vous montrer, mais au moins vous sortez les noms, etc.
Pour info, à partir de Devel v3, vous devrez effectuer deux mises à jour si vous utilisez la méthode supérieure suggérée par @chrisshattuck
admin/config/development/devel?q=/admin/config/development/devel
settings.local.php
et mettez à jour la variable max_depth. include_once(DRUPAL_ROOT . './../vendor/kint-php/kint/src/Kint.php');
if (class_exists('Kint')) {
Kint::$max_depth = 4;
}
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 nserialize.com et choisir Krumo display ....