Отправка веб-формы Drupal 7 в удаленную базу данных MySQL - PullRequest
0 голосов
/ 05 марта 2012

Когда пользователь заполняет веб-форму на моем сайте Drupal 7, при отправке мне необходимо отправить данные отправки в другую базу данных.Я использую hook_webform_submission_insert в пользовательском модуле, но я могу получить только sid и nid для вставки в таблицу.Мне нужно, чтобы мои поля веб-формы также были отправлены;как имя, фамилия, адрес электронной почты и т. д. Но я получаю ошибки при отправке.

<?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', но это не работает.Что я делаю не так?

1 Ответ

2 голосов
/ 09 мая 2012

Чтобы получить все представленные данные, вам придется пойти по этому пути немного по-другому.Сначала добавьте дополнительный обработчик отправки для вызова пользовательской функции в вашем модуле, используя форму 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();

}
...