网页表单中的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_
生成的 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中的所有配置正确的简单示例表单显示“找不到页面”..为什么......?