如何在渲染数组中查找元素


8

我只是花了很多时间在渲染数组中查找元素。我通常会dpm()先打印数组,然后展开选项,直到找到所需的内容。

在较大的阵列上比较麻烦。当我使用时print_r(),我可以进行文本搜索,但是很难看到数组的结构并找到元素的路径。

您还可以建议其他哪些方法?


这个问题值得补充我的全部代表!
niksmac

有一些模块可以修饰所有这些caca。我懒得去看看,但是如果我没记错的话,dev模块与krumo和其他转储增强程序集成在一起。然后总是有一个不错的旧调试器,您甚至可以在其中实际检查并压低对象。
stefgosselin 2012年

@stefgosselin OP已经在使用Devel模块了dpm(),我想他正在寻找一个函数,该函数可以通过给定的名称/键在渲染数组中查找子元素
Clive

@MotoTribe如果我做对了,而您正在寻找一个功能,您希望从中提供/获得什么样的输入/输出?是否会$elements = find_elements_by_key($render_array, 'element_name');返回带有匹配键的render数组中所有元素的数组?
克莱夫(Clive)

正确。在开发中,“ krumo display = disabled”显示了一个更好格式的数组,在这里我可以使用文本搜索。理想情况下,在krumo输出中应该有一个搜索功能和一个“复制”功能,在这里我可以复制完整的数组路径['...'] ['...'],而无需键入它。是的,您的功能也很棒。那不是Drupal或PHP函数,不是吗?
uwe 2012年

Answers:


9

有Devel扩展模块:Search Krumo。它使用Javascript在Krumo / dpm消息中查找文本,并在这些位置打开数组。
看起来像这样:
在此处输入图片说明

更新资料

2012年4月22日之后,您应该使用sdpm()函数查看搜索框。


没办法,那正是我想要的!!!谢谢!!!
uwe 2012年

@MotoTribe,所以我可以接受它:)
卡拉布罗2012年

对不起,错过了那个。这是一个很棒的工具,请一直使用!!!
uwe 2012年

我在哪里放置此扩展模块?在开发目录[\ www \ drupal \ sites \ all \ modules \ devel]内或在已贡献模块目录[\ www \ drupal \ sites \ all \ modules]中
GiLL 2012年

您能否提及一下如何使用sdpm()函数?在哪里粘贴?很感谢。
CodeNext

5

渲染数组的主要问题之一是,通常要查找一堆信息的只读副本。如果要实际更改渲染输出,则必须找到正确的渲染输出。我通常使用dpm(),然后查看页面源并在那里搜索输出,在两个显示之间来回翻转直到找到所需的内容。

如果要转储渲染数组的内容到终端的给定路径(例如,将其通过grep传递),则可以执行以下操作:

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);'

当然,您也可以在浏览器中“查看页面源代码”并使用剪贴板,但是以上内容可能是Drush命令开始以查看渲染数组的开始。

更新:我找到了一个关于这个主题的非常好的文章:可怕的渲染数组 -可能是到目前为止我所见过的最好的渲染数组处理方法。我还应该在前面提到devel_themer模块。在您感兴趣的渲染数组部分“放大”方面,它做得很好。


非常感谢您链接到The Scary Render Array-很棒的文章!
安迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.