7

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

4

5 回答 5

14

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

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

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

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

希望能有所帮助。

于 2012-10-02T03:26:26.360 回答
6

你能行的,

您只需要节点的 id,然后使用 hook_form_<FORMID>_alter() 中的 id

生成的 FORMID 是 webform_client_form_<NODEID>

其中 NODEID 是节点的 ID

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

function mymodule_form_webform_client_form_44_alter(&$form, &$form_state) {
// code here;
}
于 2011-06-29T13:41:38.657 回答
3

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

于 2011-06-22T16:56:49.380 回答
0

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

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

于 2011-02-24T14:39:57.450 回答
0

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

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

于 2011-02-24T18:24:00.457 回答