Отправить Webform-у с помощью AJAX
14 января 2017
Пример отправки веб-формы webform_client_form_123
с помощью AJAX:
/** * Implements hook_form_FORM_ID_alter(): webform_client_form_123. */ function mymodule_form_webform_client_form_123_alter(&$form, &$form_state) { $form['actions']['submit']['#ajax'] = array( 'callback' => 'mymodule_form_webform_client_form_ajax_submit', 'wrapper' => $form['#id'], ); // Удаляем #pre_render, иначе не будет работать ajax unset($form['actions']['submit']['#pre_render']); } /** * Ajax submit. */ function mymodule_form_webform_client_form_ajax_submit($form, &$form_state) { if (form_get_errors()) { return $form; } else { $webform = $form['#node']->webform; return check_markup($webform['confirmation'], $webform['confirmation_format']); } }
Есть и соответствующий модуль.
Добавлено 03.03.2015
Способ аяксифицировать все веб-формы открывающиеся в модуле Auto-Dialog:
/** * Implements hook_form_BASE_FORM_ID_alter(): webform_client_form. */ function MODULENAME_form_webform_client_form_alter(&$form, &$form_state) { if ($form['#action'] == base_path() . 'system/ajax' || _autodialog_check_request()) { $form['actions']['submit']['#ajax'] = array( 'callback' => 'MODULENAME_form_webform_client_form_ajax_submit', 'wrapper' => $form['#id'], ); unset($form['actions']['submit']['#pre_render']); } } /** * Ajax submit. */ function MODULENAME_form_webform_client_form_ajax_submit($form, &$form_state) { if (form_get_errors()) { return $form; } else { $webform = $form['#node']->webform; return check_markup($webform['confirmation'], $webform['confirmation_format']); } }