Comment trouver des éléments dans un tableau de rendu

8

Je viens de passer beaucoup de temps à trouver un élément dans un tableau de rendu. J'utilise généralement dpm()pour imprimer le tableau, puis étendre les options jusqu'à ce que je trouve ce que je recherche.

Sur des tableaux plus grands, c'est encombrant. Lorsque j'utilise print_r(), je peux faire une recherche de texte, mais il est difficile de voir la structure du tableau et de trouver le chemin d'accès à l'élément.

Quelles autres méthodes pouvez-vous suggérer?

uwe
la source
Cette question vaut la peine d'ajouter mes représentants complets !!
niksmac
Il y a quelques modules pour embellir tout ce caca . Je suis trop paresseux pour aller voir, mais le module de développement s'intègre à krumo et à d'autres améliorateurs de vidage, si je me souviens bien. Ensuite, il y a toujours un bon vieux débogueur, où vous pouvez même inspecter et conduire dans les objets même.
stefgosselin
@stefgosselin OP utilise déjà le module Devel avec dpm(), je pense qu'il cherche une fonction pour trouver un sous-élément dans un tableau de rendu par un nom / clé donné
Clive
@MotoTribe Si j'ai bien compris et que vous cherchez une fonction, quelle sorte d'entrée / sortie espérez-vous en donner / en retirer? Serait-ce quelque chose comme $elements = find_elements_by_key($render_array, 'element_name');retourner un tableau de tous les éléments du tableau de rendu avec une clé correspondante?
Clive
correct. En développement, "krumo display = disabled" montre un tableau mieux formaté où je peux utiliser une recherche de texte. Idéalement, il devrait y avoir une fonction de recherche dans la sortie krumo et une fonction de "copie" où je peux copier le chemin complet du tableau ['...'] ['...'] sans avoir à le taper. Ouais, ta fonction serait géniale aussi. Ce n'est pas une fonction Drupal ou PHP, n'est-ce pas?
uwe

Réponses:

9

Il existe un module d'extension pour Devel: Search Krumo . Il utilise Javascript pour trouver du texte dans les messages Krumo / dpm et ouvrir un tableau à ces endroits.
Ressemble à ça:
entrez la description de l'image ici

Mise à jour

Après le 22 avril 2012, vous devriez utiliser la sdpm()fonction pour voir le champ de recherche.

kalabro
la source
pas du tout, c'est exactement ce que je cherchais !!! Merci!!!
uwe
@MotoTribe, donc ça peut être accepté, je pense :)
kalabro
désolé, j'ai raté celui-là. Ceci est un outil génial, utilisez-le tout le temps maintenant !!!
uwe
où je mets ce module d'extension? soit à l'intérieur du répertoire devel [\ www \ drupal \ sites \ all \ modules \ devel] soit à l'intérieur du répertoire des modules contribués [\ www \ drupal \ sites \ all \ modules]
GiLL
Pourriez-vous s'il vous plaît mentionner que comment utiliser la fonction sdpm ()? où coller? Milles mercis.
CodeNext
5

L'un des gros problèmes des tableaux de rendu est qu'il existe souvent un tas de copies en lecture seule des informations que vous recherchez. Si vous voulez réellement changer la sortie de rendu, vous devez trouver la bonne. J'utilise généralement dpm (), puis j'affiche la source de la page et je recherche dans la sortie là-bas, en faisant des allers-retours entre les deux écrans jusqu'à ce que je trouve ce dont j'ai besoin.

Si vous voulez vider le contenu d'un tableau de rendu pour un chemin donné vers le terminal (par exemple pour le passer par grep), vous pouvez faire quelque chose comme ceci:

drush ev '$router_item=menu_get_item("node/7"); require_once(DRUPAL_ROOT .
"/" . $router_item["include_file"]);
$render_array=call_user_func_array($router_item["page_callback"],
$router_item["page_arguments"]); print_r($render_array);'

Vous pouvez également simplement «afficher la source de la page» dans votre navigateur et utiliser le presse-papiers, bien sûr, mais ce qui précède peut être le début d'une commande Drush pour afficher les tableaux de rendu.

Mise à jour: J'ai trouvé un très bon article sur ce sujet: The Scary Render Array - probablement le meilleur traitement des tableaux de rendu que j'ai vu jusqu'à présent. J'aurais également dû mentionner le module devel_themer dès le départ; il fait un bon travail de "zoom avant" sur la section du tableau de rendu qui vous intéresse.

greg_1_anderson
la source
Je ne vous remercierai jamais assez pour votre lien vers The Scary Render Array - excellent article!
Andy