web-dev-qa-db-fra.com

dpm () n'affiche aucun résultat à l'écran

J'ai le même problème que file_scan_directory () prend environ 10 secondes pour s'exécuter . Je viens d'essayer la suggestion dpm(func_get_args()), et malheureusement elle ne me montre rien.

J'ai effacé tous les caches et exécuté les tâches cron. Qu'est-ce que je rate?

23
Jimmy

Assurez-vous que vous avez print $messages; dans ton page.tpl.phptemplate file. Par défaut, devel (dpm) est configuré pour imprimer son contenu dans la zone de message du site. Donc, si votre modèle pour une raison quelconque ne rend pas le contenu de $messages, vous ne verrez rien.

28
svetlio
  1. Parfois, krumo($variable) peut fonctionner lorsque dpm($variable) ne fonctionne pas.

  2. Parfois, print dpm($variable) peut fonctionner lorsque dpm($variable) ne fonctionne pas.

    1. pourrait également être la solution lorsqu'il n'y a pas de print $messages dans ton page.tpl.php plus. Vous pouvez peut-être l'ajouter à nouveau.
13
leymannx

Vous devez être connecté au site Drupal, avec les autorisations appropriées pour accéder à Devel. Connectez-vous en tant qu'administrateur devrait le faire.

9
Powdermonkey1850

Je recommande fortement devel_debug_log . Il nécessite le module devel, et il vous donne la fonction ddl (). ddl ajoute une page à vos rapports dans la configuration, donc c'est similaire à l'impression sur watchdog, mais vous avez une belle page propre où vous pouvez envoyer vos messages de débogage, et ne vous inquiétez pas des conditions de type race où vos messages pourraient être effacés avant que vous ne les ayez une chance de les voir - ou, comme dans votre cas, des problèmes thématiques.

(C'est également un outil EXTRÊMEMENT utile si vous essayez de créer une sorte d'API, car toutes ces demandes ne vous montreraient jamais aucun type de messages dpm ().)

9
UnsettlingTrend

Assurez-vous d'avoir activé et installé le module Devel car dpm() est une fonction déclarée dans ce module.

dpm() description tirée de ici .

Imprime une variable dans la zone ‘message’ de la page en utilisant drupal_set_message (). Vous pouvez utiliser cette fonction pour suivre une ou plusieurs variables lorsque vous travaillez sur le code exécutant votre site. Étant donné que le module Devel est désormais fourni avec Krumo, la sortie est compacte et discrète.

dpm($input, $name = NULL)

Si, pour une raison quelconque, vous n'utilisez pas Krumo, vous pouvez utiliser le paramètre $ name pour distinguer les différents appels à dpm ().

Après avoir téléchargé et activé Devel, essayez à nouveau la réponse de file_scan_directory () prend environ 10 secondes pour exécuter et cela devrait fonctionner.

8
Chapabu

Si vous souhaitez l'imprimer depuis l'intérieur d'une fonction sans toucher (ou avoir) un fichier modèle, essayez ceci:

$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages'); 
5
Gavin Mcdonough

C'est parfois le résultat d'une ressource sur la page renvoyant un 404.

Drupal affiche la page 404 et, ce faisant, récupère (et efface) les messages de la session et les place sur la page 404 que vous ne voyez pas. Ensuite, lorsque la page principale récupère les messages, il n'en reste plus.

Vous pouvez ouvrir l'onglet réseau et vérifier si des ressources ont le statut 404.

Une solution simple ici est d'activer le 404 rapide en décommentant cette ligne dans settings.php:

# drupal_fast_404();

Une autre bonne solution ici est d'utiliser devel_debug_log comme suggéré par SlakeFistcrunch.

3
Felix Eve

Parfois, le message peut être coupé ou ne fonctionnera pas en cas d'AJAX.

Une méthode plus fiable consiste à faire juste (puis à retirer après la fin):

var_dump($data); die();

Ou vous pouvez utiliser dd() (faisant également partie de Devel), par exemple.

dd(func_get_args());

puis vérifiez votre fichier journal (dans le dossier temporaire), par ex.

$ tail -f /tmp/drupal_debug.txt

L'utilisation de la méthode ci-dessus est plus pratique, plus rapide et peut prendre en charge AJAX ou toute autre demande sans interrompre le rendu du site actuel.


Si vous aimez toujours dpm(), essayez également d'utiliser kint() (activez le sous-module Kint inclus pour ces jolies impressions de variables).

2
kenorb

Si seuls certains appels de dpm() ne fonctionnent pas, cela peut être dû au plantage de dpm(). Je l'ai vu se produire dans le scénario suivant dans un gestionnaire de soumission de formulaire personnalisé:

function mymodule_formid_submit($form, &$form_state) {
  dpm($form_state);
}

Je crois que la condition d'erreur a été détectée par un gestionnaire d'exceptions dans dpm(), car la page affichait bien, pas de WSOD ou quelque chose, juste pas de message dpm() non plus. L'erreur est probablement une récursion non détectée, car l'utilisation de ddl($form_state) à la place a entraîné une saturation maximale du navigateur en regardant l'objet correspondant dans le rapport généré par le module Devel Debug Log.

Pour contourner ce problème, essayez d'imprimer uniquement une partie (pertinente) de l'objet, comme dpm($form_state['values']) ou dpm(array_keys($form_state)).

1
tanius