Drupal: Отправить Webform-у с помощью AJAX

Опубликовано: 09.10.2017

видео Drupal: Отправить Webform-у с помощью AJAX

Miloš Bovan - Create Drupal content by sending an email

Пример отправки веб-формы 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' ] ) ; } }

Drupal console create a form

rss