【发布时间】:2011-02-24 14:00:56
【问题描述】:
我知道可以使用一些函数来改变 drupal 核心形式:hook_form_alter()。
我们可以将它与使用 Webform 模块创建的 Drupal 表单一起使用吗?
【问题讨论】:
标签: drupal drupal-webform
我知道可以使用一些函数来改变 drupal 核心形式:hook_form_alter()。
我们可以将它与使用 Webform 模块创建的 Drupal 表单一起使用吗?
【问题讨论】:
标签: drupal drupal-webform
在 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
希望能有所帮助。
【讨论】:
你可以的,
您只需要节点的 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;
}
【讨论】:
你可以使用hook_form_alter(),通过$form['submitted']访问元素。
【讨论】:
我不太确定您要做什么,但是由于 webform 模块创建了一个内容类型 - webform - 您可以完全通过管理界面更改由 webform 创建的表单 - 添加新的输入和输入类型,指定它们是否是是否需要等。
例如,“联系我们”表单可以包含您想要的任何输入 - 与核心 Drupal 联系表单不同,IIRC 只有一个电子邮件地址和一个文本区域。
【讨论】:
是的,如果由于某种原因您需要对 webform 进行更改,而您无法通过编辑 webform 节点来更改,那么您也可以使用 hook_form_alter 来更改表单,因为 webform 是由表单创建的api。
也就是说,请在 webform 的某些角落四处寻找 - 它已经提供了许多用于动态填充或更改表单部分的选项。
【讨论】: