2011-02-24 53 views
6

我知道有可能使用一些函数来改变drupal核心表单:hook_form_alter()。 我们可以在用Webform模块创建的Drupal表单中使用它吗?drupal表单修改网络表单

回答

0

我不太清楚你在做什么,但是因为webform模块创建了一个内容类型--webform - 你可以纯粹通过管理界面改变由webform创建的表单 - 添加新的输入和输入类型,指定它们是否它们是否需要等

例如,“联系我们”表单可以有任何你想要的输入 - 不像核心Drupal联系表单,它只有一个电子邮件地址和一个textarea。

+0

我想在php中捕获数据,并用 – Mamadou 2011-02-24 14:45:32

+0

执行watever不太确定。我认为webforms可以添加到任何节点类型。 – HerrSerker 2011-10-21 11:46:18

0

是的,如果由于某种原因您需要更改网络表单,而您无法通过编辑网络表单节点进行更改,那么您也可以使用hook_form_alter更改表单,因为网络表单是由形式API。也就是说,在webform的某些角落里做点什么 - 它带有许多用于动态填充或更改表单部分的选项。

2

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

6

你可以做到这一点,

你只需要节点的ID,然后使用id像 hook_form_ <FORMID> _alter()

的FORMID产生是webform_client_form_ <NODEID>

其中NODEID是节点的ID

所以如果你有一个名为mymodule的模块和一个id为44的节点,那么h的一个WebForm

function mymodule_form_webform_client_form_44_alter(&$form, &$form_state) { 
// code here; 
} 
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

希望能有所帮助。