Drupal → AJAX submit с поддержкой валидации
Пример ajax формы с поддержкой валидации.
Drupal 8
class ExampleForm extends FormBase { /** * {@inheritDoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $form['#id'] = Html::getId($this->getFormId()); $form['testfield'] = [ '#type' => 'textfield', '#title' => 'Testfield', '#required' => TRUE, ]; $form['submit'] = [ '#type' => 'submit', '#value' => 'Submit', '#ajax' => [ 'callback' => '::ajaxSubmit', 'wrapper' => $form['#id'], ], ]; return $form; } /** * Ajax submit. */ public function ajaxSubmit(array &$form, FormStateInterface $form_state) { if ($form_state->hasAnyErrors()) { return $form; } return ['#markup' => 'Form submitted']; } }
Drupal 7
/** * Form builder. */ function modulename_testform($form, &$form_state) { $form['testfield'] = array( '#type' => 'textfield', '#title' => 'Testfield', '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Submit', '#ajax' => array( 'callback' => 'modulename_testform_ajax_submit', 'wrapper' => 'modulename-testform', ), ); return $form; } /** * Ajax submit. */ function modulename_testform_ajax_submit($form, &$form_state) { if (form_get_errors()) { return $form; } else { return 'Form submitted'; } }
При провале валидации форма обновится и выведутся сообщения об ошибках, иначе вместо формы появится текст "Form submitted".
Оставить комментарий