2012-03-05 8 views
0

ユーザーがDrupal 7サイトのWebフォームに記入すると、送信時に、送信データを別のデータベースに送信する必要があります。私はカスタムモジュールでhook_webform_submission_insertを使用していますが、sidとnidをテーブルに挿入することしかできません。ウェブフォームのフィールドも送信する必要があります。 first_name、last_name、emailのようなものですが、投稿時にエラーが発生します。Drupal 7 webformからリモートmysqlデータベースへの送信

<?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'を試しましたが、動作しません。私は間違って何をしていますか?

答えて

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

} 
関連する問題