Si vous développez avec drupal, vous connaissez peut-être les fonctions dump, dpm ou kint, (sinon, lisez ma rapide présentation de kint.)
Une autre fonction très pratique mais moins connue est ddm(), anciennement connue sous le nom de dd(), qui permet de dumper les paramètres dans un fichier, au lieu de les afficher dans la page. Cette fonction est donc très pratique dans les cas où l’on a aucun retour d’affiché (batch, hook_update, EventSubscriber...)
Note : Cette fonction vient du module devel, le module doit donc être installé et activé pour que la fonction soit disponible.
Le paramètre passé à la fonction est dumpé dans le fichier temporary://drupal-debug.txt, ainsi, sur mon site le wrapper temporary:// est configuré dans le dossier ../files/tmp. (Note : cette configuration se fait directement dans le fichier settings.php de drupal, elle était avant dans Configuration / Médias / Système de fichier)
Je peux donc afficher le contenu de ce fichier directement dans un éditeur de texte. À savoir que les tableaux et objets sont dumpé hiéarchiquement, ce qui est pratique mais qui peut rapidement alourdir ce fichier !
# Dans un de vos fichier php :
ddm($variable);
On peut assi ajouter des labels à ce que l'on dump pour éviter de se perdre quand on dump plusieurs variables :
function kgaut_2020_preprocess_node(array &$variables) {
/** @var \Drupal\node\Entity\Node $node */
$node = $variables['elements']['#node'];
ddm('------------------');
ddm($node->getType(), 'Type de noeud');
ddm($node->getTitle(), 'Titre');
ddm($node->getCreatedTime(), 'Created');
...
}
Enfin, la fonction bach tail, on peut afficher en live ce qui est dumpé, dans un terminal, sans avoir à recharger le fichier, la commande à exécuter est ci-dessous :
# Chemin à adapter en fonction de votre organisation :
tail -f /vhosts/kgaut.net/files/tmp/drupal_debug.txt
Évidement, cela ne vaut pas un "vrai" debuger comme xdebug ou autre, mais c'est mieux que rien !
Commentaires
Merci Kevin pour l'astuce, très utile.
Je me demandais notamment comment récupérer certaines valeurs d'appel ajax sur un form lors d'un événement sur un select ou une case à cochée. Là je penses qu'on peut, non ? Ou il y a plus simple peut-être ?
Ajouter un commentaire