function DynamicFormSections::submitForm

Same name and namespace in other branches
  1. 4.0.x modules/ajax_example/src/Form/DynamicFormSections.php \Drupal\ajax_example\Form\DynamicFormSections::submitForm()

Final submit handler.

Reports what values were finally set.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Overrides FormInterface::submitForm

File

modules/ajax_example/src/Form/DynamicFormSections.php, line 177

Class

DynamicFormSections
Dynamically-enabled form with graceful no-JS degradation.

Namespace

Drupal\ajax_example\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  $messenger = $this->messenger();
  // This is only executed when a button is pressed, not when the AJAXfield
  // select is changed.
  // Now handle the case of the next, previous, and submit buttons.
  // Only submit will result in actual submission, all others rebuild.
  if ($form_state->getValue('question_type_submit') == 'Choose') {
    $form_state->setValue('question_type_select', $form_state->getUserInput()['question_type_select']);
    $form_state->setRebuild();
  }
  if ($form_state->getValue('submit') == 'Submit your answer') {
    $form_state->setRebuild(FALSE);
    $answer = $form_state->getValue('question');
    // Special handling for the checkbox.
    if ($answer == 1 && $form['questions_fieldset']['question']['#type'] == 'checkbox') {
      $answer = $form['questions_fieldset']['question']['#title'];
    }
    if ($answer == $this->t('George Washington')) {
      $messenger->addMessage($this->t('You got the right answer: @answer', [
        '@answer' => $answer,
      ]));
    }
    else {
      $messenger->addMessage($this->t('Sorry, your answer (@answer) is wrong', [
        '@answer' => $answer,
      ]));
    }
    return;
  }
  // Sets the form to be rebuilt after processing.
  $form_state->setRebuild();
}