Passei muito tempo encontrando um elemento em uma matriz de renderização. Normalmente, uso dpm()
para imprimir a matriz e, em seguida, expanda as opções até encontrar o que estou procurando.
Em matrizes maiores, isso é complicado. Quando uso print_r()
, posso fazer uma pesquisa de texto, mas é difícil ver a estrutura da matriz e encontrar o caminho para o elemento.
Que outros métodos você pode sugerir?
dpm()
, eu acho que ele está à procura de uma função para encontrar um sub-elemento dentro de uma matriz tornar por um nome dado / key$elements = find_elements_by_key($render_array, 'element_name');
retornar uma matriz de todos os elementos na matriz de renderização com uma chave correspondente?Respostas:
Existe um módulo de extensão para Devel: Search Krumo . Ele usa Javascript para encontrar texto nas mensagens Krumo / dpm e abrir a matriz nesses locais.
Se parece com isso:
Atualizar
Após 22 de abril de 2012, você deve usar a
sdpm()
função para ver a caixa de pesquisa.fonte
Um dos grandes problemas com matrizes de renderização é que geralmente há várias cópias somente leitura das informações que você está procurando. Se você realmente deseja alterar a saída de renderização, precisa encontrar a correta. Normalmente, uso dpm () e, em seguida, visualizo a fonte da página e procuro a saída lá, alternando entre os dois monitores até encontrar o que preciso.
Se você deseja despejar o conteúdo de uma matriz de renderização para um determinado caminho para o terminal (por exemplo, passá-lo através do grep), você pode fazer algo assim:
Você também pode apenas 'visualizar a fonte da página' no seu navegador e usar a área de transferência, é claro, mas o acima pode ser o início de um comando Drush para visualizar matrizes de renderização.
Atualização: Encontrei um artigo realmente bom sobre esse assunto: The Scary Render Array - provavelmente o melhor tratamento para as matrizes de renderização que eu já vi até agora. Eu também deveria ter mencionado o módulo devel_themer antecipadamente; ele faz um bom trabalho em "aumentar o zoom" na seção da matriz de renderização em que você está interessado.
fonte