当用户在我的Drupal 7网站上填写网络表单时,在提交时,我需要将提交数据发送到另一个数据库。我在自定义模块中使用hook_webform_submission_insert,但我只能将sid和nid插入到表中。我也需要发送我的webform字段;比如first_name,last_name,email等。但是我提交时会出错。
<?php
function hook_webform_submission_insert($node, $submission) {
// Insert a record into a 3rd-party module table when a submission is added.
db_insert('mymodule_table')
->fields(array(
'nid' => $node->nid,
'sid' => $submission->sid,
'foo' => 'foo_data',
))
->execute();
}
?>
我试过'first_name'=&gt; 'first_name',但它不起作用。我做错了什么?
答案 0 :(得分:2)
要获得所有提交的数据,您必须采用稍微不同的方式。首先添加一个额外的提交处理程序,使用表单alter:
调用模块中的自定义函数function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if($form_id == "YOUR_WEBFORM_ID") {
$form['#submit'][] = 'MYMODULE_additional_insert';
}
}
然后从您的自定义函数中访问表单数据并进行相应处理。
function MYMODULE_additional_insert($form, &$form_state) {
$data = $form['submitted'];
// Insert a record into a 3rd-party module table when a submission is added.
db_insert('mymodule_table')
->fields(array(
'foo' => $data['FOO_FIELD']['#value'],
))
->execute();
}