在 Drupal 中查找“更改”特定表单的模块列表

Posted

技术标签:

【中文标题】在 Drupal 中查找“更改”特定表单的模块列表【英文标题】:Find a list of modules that 'altered' a specific form in Drupal 【发布时间】:2011-04-28 01:26:02 【问题描述】:

是否有技巧、插件或补丁可以让我找出哪些模块 altered 特定形式?

所有 hook_form_alters 的列表并不难实现。但我只想列出那些实际上改变了我的表格的人。

模块可以通过通用modulename_form_alter()modulename_form_FORMID_alter() 更改表单,如果两者都考虑在内会很好。

【问题讨论】:

【参考方案1】:

drupal_prepare_form 函数调用所有 hook_form_alter 函数。在这个函数中,没有存储任何实现 hook_form_alter 的模块。但是,那里有一个容器 ($data) 可以拉出所有的更改函数,然后使用 drupal_alter 应用。获取此数据需要修改此文件(参考:Drupal 6.19 中 /includes/form.inc 中的第 543 行)。

【讨论】:

我已经在那里闲逛了。但是 $data 是相当“流动的”,因此将一个 $data 与另一个 $data 进行比较,以找出一个表单是否被“更改”是行不通的。它会(以某种方式)总是返回 TRUE:$data 在每次迭代中都会以某种方式发生变化。

以上是关于在 Drupal 中查找“更改”特定表单的模块列表的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Drupal 7 中保留依赖选择框的值

Drupal 7 - 有没有办法在列表中显示特定的组?

如何 - 构建自定义 drupal 8 模块表单

如何在drupal Web表单中的选择选项中填充动态内容

Drupal Views2 暴露形式

Drupal 7 Views 3:搜索特定字段的公开过滤器