Ich habe gerade viel Zeit damit verbracht, ein Element in einem Render-Array zu finden. Normalerweise drucke ich dpm()
das Array und erweitere dann die Optionen, bis ich das finde, wonach ich suche.
Bei größeren Arrays ist das umständlich. Wenn ich benutze print_r()
, kann ich eine Textsuche durchführen, aber dann ist es schwierig, die Struktur des Arrays zu erkennen und den Pfad zum Element zu finden.
Welche anderen Methoden können Sie vorschlagen?
dpm()
, ich denke, er sucht nach einer Funktion, um ein Unterelement innerhalb eines Render-Arrays unter einem bestimmten Namen / Schlüssel zu finden$elements = find_elements_by_key($render_array, 'element_name');
ein Array aller Elemente im Render-Array mit einem passenden Schlüssel zurückzugeben?Antworten:
Es gibt ein Erweiterungsmodul für Devel: Search Krumo . Es verwendet Javascript, um Text in Krumo / dpm-Nachrichten zu finden und an diesen Stellen ein Array zu öffnen.
Sieht aus wie das:
Aktualisieren
Nach dem 22. April 2012 sollten Sie die
sdpm()
Funktion verwenden, um das Suchfeld anzuzeigen.quelle
Eines der großen Probleme bei Render-Arrays besteht darin, dass häufig eine Reihe von schreibgeschützten Kopien der gesuchten Informationen vorhanden sind. Wenn Sie die Renderausgabe tatsächlich ändern möchten , müssen Sie die richtige finden. Normalerweise verwende ich dpm (), zeige dann die Seitenquelle an und durchsuche dort die Ausgabe, wobei ich zwischen den beiden Anzeigen hin und her blättere, bis ich das finde, was ich brauche.
Wenn Sie den Inhalt eines Render-Arrays für einen bestimmten Pfad zum Terminal sichern möchten (z. B. um ihn über grep zu übergeben), können Sie Folgendes tun:
Sie können die Seitenquelle auch einfach in Ihrem Browser anzeigen und die Zwischenablage verwenden. Dies kann jedoch der Beginn eines Drush-Befehls zum Anzeigen von Render-Arrays sein.
Update: Ich habe einen wirklich guten Artikel zu diesem Thema gefunden: Das Scary Render Array - wahrscheinlich die beste Behandlung für Render-Arrays, die ich bisher gesehen habe. Ich hätte auch das Modul devel_themer im Voraus erwähnen sollen . Es macht einen guten Job beim "Vergrößern" des Abschnitts des Render-Arrays, an dem Sie interessiert sind.
quelle