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