我知道可以使用一些函数来改变drupal核心形式:hook_form_alter()
。
我们可以将它与使用Webform模块创建的Drupal表单一起使用吗?
答案 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的某些角落里逛逛 - 它带有许多选项,可以动态填充或更改表单的各个部分。