0

Drupal 7 サイトでユーザーが Web フォームに入力し、送信するときに、送信データを別のデータベースに送信する必要があります。カスタム モジュールで hook_webform_submission_insert を使用していますが、テーブルに挿入される sid と nid しか取得できません。Webフォームフィールドも送信する必要があります。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 に答える