0

当用户在我的 Drupal 7 站点上填写网络表单时,在提交时,我需要将提交数据发送到另一个数据库。我在自定义模块中使用 hook_webform_submission_insert,但我只能将 sid 和 nid 插入表中。我还需要发送我的网络表单字段;像 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' => 'first_name',但它不起作用。我究竟做错了什么?

4

1 回答 1

2

要获取所有提交的数据,您必须采用稍微不同的方式。首先添加一个额外的提交处理程序以使用表单更改调用模块中的自定义函数:

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();

}
于 2012-05-09T12:30:05.447 回答