drupal形式改变webform形式

时间:2011-02-24 14:00:57

标签: drupal drupal-webform

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

5 个答案:

答案 0 :(得分:14)

在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

希望可以提供帮助。

答案 1 :(得分:6)

你可以做到,

你只需要节点的id然后使用id中的id hook_form_&LT; FORMID&GT; _alter()

生成的FORMID是webform_client_form_&lt; NODEID&gt;

其中NODEID是节点的id

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

的节点
function mymodule_form_webform_client_form_44_alter(&$form, &$form_state) {
// code here;
}

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

也就是说,在webform的某些角落里逛逛 - 它带有许多选项,可以动态填充或更改表单的各个部分。