Same name and namespace in other branches
  1. 8.9.x core/modules/system/tests/modules/form_test/src/Callbacks.php \Drupal\form_test\Callbacks::validateName()
  2. 9 core/modules/system/tests/modules/form_test/src/Callbacks.php \Drupal\form_test\Callbacks::validateName()

Form element validation handler for 'name' in form_test_validate_form().

File

core/modules/system/tests/modules/form_test/src/Callbacks.php, line 15

Class

Callbacks
Simple class for testing methods as Form API callbacks.

Namespace

Drupal\form_test

Code

public function validateName(&$element, FormStateInterface $form_state) {
  $triggered = FALSE;
  if ($form_state
    ->getValue('name') == 'element_validate') {

    // Alter the form element.
    $element['#value'] = '#value changed by #element_validate';

    // Alter the submitted value in $form_state.
    $form_state
      ->setValueForElement($element, 'value changed by setValueForElement() in #element_validate');
    $triggered = TRUE;
  }
  if ($form_state
    ->getValue('name') == 'element_validate_access') {
    $form_state
      ->set('form_test_name', $form_state
      ->getValue('name'));

    // Alter the form element.
    $element['#access'] = FALSE;
    $triggered = TRUE;
  }
  elseif ($form_state
    ->has('form_test_name')) {

    // To simplify this test, just take over the element's value into $form_state.
    $form_state
      ->setValueForElement($element, $form_state
      ->get('form_test_name'));
    $triggered = TRUE;
  }
  if ($triggered) {

    // Output the element's value from $form_state.
    \Drupal::messenger()
      ->addStatus(t('@label value: @value', [
      '@label' => $element['#title'],
      '@value' => $form_state
        ->getValue('name'),
    ]));

    // Trigger a form validation error to see our changes.
    $form_state
      ->setErrorByName('');
  }
}