网页表单中的drupal表单更改

Posted

技术标签:

【中文标题】网页表单中的drupal表单更改【英文标题】:drupal form alter in webform forms 【发布时间】:2011-02-24 14:00:56 【问题描述】:

我知道可以使用一些函数来改变 drupal 核心形式:hook_form_alter()。 我们可以将它与使用 Webform 模块创建的 Drupal 表单一起使用吗?

【问题讨论】:

【参考方案1】:

在 Drupal 7 中,您可以使用 hook_form_alter()hook_form_<formid>_alter(),无论您喜欢哪个。只要确保你得到正确的命名和参数。然而 Drupal 6 只支持hook_form_alter()

当您创建这些函数时,还请记住,在您刷新缓存之前,Drupal 可能不会一直使用它们。

另一个需要注意的重要事项是,如果您想更改网络表单字段,您必须在 $form['submitted'] 中进行更改。我犯了一个错误,最初尝试编辑$form['#node']->webform['components'],没有效果。

更多信息可以在这里找到:http://drupal.org/node/1558246

希望能有所帮助。

【讨论】:

【参考方案2】:

你可以的,

您只需要节点的 id,然后使用 id 就像 hook_form__alter()

生成的 FORMID 是 webform_client_form_

其中 NODEID 是节点的 ID

所以如果你有一个名为 mymodule 的模块和一个 id 为 44 且有一个 webform 的节点

function mymodule_form_webform_client_form_44_alter(&$form, &$form_state) 
// code here;

【讨论】:

【参考方案3】:

你可以使用hook_form_alter(),通过$form['submitted']访问元素。

【讨论】:

【参考方案4】:

我不太确定您要做什么,但是由于 webform 模块创建了一个内容类型 - webform - 您可以完全通过管理界面更改由 webform 创建的表单 - 添加新的输入和输入类型,指定它们是否是是否需要等。

例如,“联系我们”表单可以包含您想要的任何输入 - 与核心 Drupal 联系表单不同,IIRC 只有一个电子邮件地址和一个文本区域。

【讨论】:

我想在 php 中捕获数据并用我想要的方式进行操作 对此不太确定。我认为网络表单可以添加到任何节点类型。【参考方案5】:

是的,如果由于某种原因您需要对 webform 进行更改,而您无法通过编辑 webform 节点来更改,那么您也可以使用 hook_form_alter 来更改表单,因为 webform 是由表单创建的api。

也就是说,请在 webform 的某些角落四处寻找 - 它已经提供了许多用于动态填充或更改表单部分的选项。

【讨论】:

以上是关于网页表单中的drupal表单更改的主要内容,如果未能解决你的问题,请参考以下文章

drupal 7中的所有配置正确的简单示例表单显示“找不到页面”..为什么......?

Drupal Views2 暴露形式

Drupal 6 中的自定义搜索表单:视图/面板还是自定义 sql?

php Drupal中的条件表单字段

自定义模板中的Drupal 7自定义表单

如何将 AdWords 转化跟踪代码添加到 drupal 中的特定表单