dpm () zeigt keine Ergebnisse auf dem Bildschirm an

23

Ich habe das gleiche Problem wie file_scan_directory () dauert ca. 10 Sekunden . Ich habe den dpm(func_get_args())Vorschlag gerade ausprobiert und er zeigt mir leider nichts.

Ich habe alle Caches geleert und die Cron-Tasks ausgeführt. Was vermisse ich?

Jimmy
quelle
2
Stellen Sie sicher, dass Sie über die Berechtigungen zum Zugreifen auf Entwicklerinformationen unter Entwickeln von Personen / Berechtigungen
karthik

Antworten:

28

Stellen Sie sicher, dass Sie print $messages;in Ihrer page.tpl.phpVorlagendatei haben. Standardmäßig ist devel (dpm) so konfiguriert, dass der Inhalt im Nachrichtenbereich der Site gedruckt wird. Wenn Ihre Vorlage aus irgendeinem Grund nicht den Inhalt von rendert $messages, werden Sie nichts sehen.

svetlio
quelle
13
  1. Funktioniert manchmal krumo($variable), wenn dpm($variable)nicht.

  2. Funktioniert manchmal print dpm($variable), wenn dpm($variable)nicht.

    1. könnte auch die lösung sein, wenn es keine mehr print $messagesin deinem gibt page.tpl.php. Vielleicht können Sie es wieder hinzufügen.
leymannx
quelle
9

Sie müssen auf der Drupal-Site angemeldet sein und über die richtigen Berechtigungen verfügen, um auf Devel zugreifen zu können. Melden Sie sich als Administrator an.

Powdermonkey1850
quelle
7
Eine Anmeldung ist nicht erforderlich, wenn die anonymen Benutzer die richtigen Berechtigungen haben.
kiamlaluno
3
Diese Berechtigung finden Sie unter "admin / people / permissions" unter "Zugriff auf Entwicklerinformationen".
Citricguy
9

Ich würde devel_debug_log wärmstens empfehlen . Es erfordert das Entwicklungsmodul und gibt Ihnen die Funktion ddl (). ddl fügt Ihren Berichten in der Konfiguration eine Seite hinzu. Dies ähnelt dem Drucken im Watchdog-Modus. Sie haben jedoch eine schöne, saubere Seite, auf der Sie Ihre Debug-Nachrichten senden können eine Chance, sie zu sehen - oder, wie in Ihrem Fall, Themen.

(Dies ist auch ein EXTREM nützliches Tool, wenn Sie versuchen, irgendeine Art von API zu erstellen, da all diese Anfragen niemals irgendeine Art von dpm () - Nachrichten anzeigen würden.)

Beunruhigender Trend
quelle
1
Dies war für mich die beste Gesamtlösung.
Rrirower
1
Auch beim Debuggen von Ajax-Anfragen von unschätzbarem Wert.
Felix Eve
8

Stellen Sie sicher, dass Sie das Devel- Modul so aktiviert und installiert haben, wie dpm()es in diesem Modul als Funktion deklariert ist.

dpm()Beschreibung von genommen hier .

Druckt eine Variable mit drupal_set_message () in den 'message'-Bereich der Seite. Mit dieser Funktion können Sie eine oder mehrere Variablen verfolgen, wenn Sie an dem Code arbeiten, der Ihre Site ausführt. Da das Devel-Modul jetzt mit Krumo geliefert wird, ist die Ausgabe kompakt und unauffällig.

dpm($input, $name = NULL)

Wenn Sie Krumo aus irgendeinem Grund nicht verwenden, können Sie mit dem Parameter $ name zwischen verschiedenen Aufrufen von dpm () unterscheiden.

Nachdem Sie Devel heruntergeladen und aktiviert haben, versuchen Sie die Antwort von dauert es ungefähr 10 Sekunden, bis file_scan_directory () erneut ausgeführt wird, und sie sollte funktionieren.

Chapabu
quelle
Es bleibt dasselbe. Ich habe das Entwicklungsmodul installiert und aktiviert, alle Caches gelöscht, cron ausgeführt und trotzdem zeigt dpm (func_get_args ()) nichts an.
Jimmy
Wo steckst du dpm(func_get_args());?
Chapabu
In der Datei bootstrap.inc: dpm (func_get_args ()); $ matches = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'name', 0); ...
Jimmy
Versuchen Sie dpm(func_get_args());, die(print_r(func_get_args());Devel für den Moment zu umgehen.
Chapabu
3
Wenn der zweite Befehl, den Chapabu wiederholt, nichts ändert, heißt das einfach, dass der Code nicht aufgerufen wird und Sie nicht vom gleichen Problem betroffen sind.
Berdir
5

Wenn Sie es aus einer Funktion heraus drucken möchten, ohne eine Vorlagendatei zu berühren (oder zu haben), versuchen Sie Folgendes:

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

Dies ist manchmal das Ergebnis einer Ressource auf der Seite, die den Wert 404 zurückgibt.

Drupal rendert die 404-Seite und ruft dabei die Nachrichten aus der Sitzung ab (und löscht sie) und platziert sie auf der 404-Seite, die Sie nicht sehen. Wenn dann die Hauptseite die Nachrichten abruft, sind keine mehr übrig.

Sie können die Registerkarte Netzwerk öffnen und prüfen, ob Ressourcen den Status 404 haben.

Eine einfache Lösung ist, schnelles 404 zu aktivieren, indem Sie diese Zeile in settings.php auskommentieren:

# drupal_fast_404();

Eine andere gute Lösung ist die Verwendung von devel_debug_log, wie von SlakeFistcrunch vorgeschlagen.

Felix Eve
quelle
2

Manchmal kann die Nachricht abgeschnitten werden oder funktioniert bei AJAX nicht.

Eine zuverlässigere Methode ist, einfach Folgendes zu tun (und nach Abschluss zu entfernen):

var_dump($data); die();

Oder Sie können dd()(auch Teil von Devel) verwenden, z

dd(func_get_args());

Überprüfen Sie dann Ihre Protokolldatei (im temporären Ordner), z

$ tail -f /tmp/drupal_debug.txt

Die Verwendung der oben genannten Methode ist bequemer, schneller und unterstützt möglicherweise AJAX oder andere Anforderungen, ohne das aktuelle Site-Rendering zu beeinträchtigen.


Wenn Sie immer noch mögen dpm(), versuchen Sie es auch mit kint()(aktivieren Sie das mitgelieferte Kint-Modul für diesen hübschen Ausdruck von Variablen).

Kenorb
quelle
1

Wenn nur einige dpm()Anrufe nicht funktionieren, kann dies an einem dpm()Absturz liegen. Ich habe es in einem benutzerdefinierten Formular-Submit-Handler im folgenden Szenario gesehen:

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

Ich glaube, die Fehlerbedingung wurde von einem Ausnahmebehandler in abgefangen dpm(), weil die Seite gut angezeigt wurde, kein WSOD oder so, nur keine dpm()Meldung. Der Fehler ist wahrscheinlich eine unentdeckte Rekursion, da die Verwendung des ddl($form_state)Browsers zu einer maximalen Speicherauslastung führte, wenn das entsprechende Objekt in dem vom Devel Debug Log-Modul generierten Bericht angezeigt wurde.

Versuchen Sie zur Umgehung dieses Problems, nur einen (relevanten) Teil des Objekts wie dpm($form_state['values'])oder zu drucken dpm(array_keys($form_state)).

Tanius
quelle