You are here

function field_default_token_field_config_edit_form_validate in Field default token 8

Form validation handler for the field configuration edit form.

Replacement for \Drupal\field_ui\Form\FieldConfigEditForm::validateForm().

1 string reference to 'field_default_token_field_config_edit_form_validate'
field_default_token_form_field_config_edit_form_alter in ./field_default_token.module
Implements hook_form_FORM_ID_alter() for the field configuration edit form.

File

./field_default_token.module, line 283
Enables to use tokens as field default values.

Code

function field_default_token_field_config_edit_form_validate($form, FormStateInterface $form_state) {

  // See \Drupal\field_ui\Form\FieldConfigEditForm::validateForm().
  if (isset($form['default_value']) && ($widget = $form_state
    ->get('default_value_widget'))) {

    /** @var \Drupal\Core\Entity\FieldableEntityInterface $entity */
    $entity = $form['#entity'];

    /** @var \Drupal\Core\Entity\EntityFormInterface $form_object */
    $form_object = $form_state
      ->getFormObject();

    /** @var \Drupal\field\FieldConfigInterface $field_config */
    $field_config = $form_object
      ->getEntity();
    $items = $entity
      ->get($field_config
      ->getName());
    $widget
      ->extractFormValues($items, $form['default_value'], $form_state);
    foreach ($items as $item) {

      /** @var \Drupal\Core\TypedData\TypedDataInterface $property */
      foreach ($item as $property) {
        $value = $property
          ->getValue();
        if (is_array($value)) {
          continue;
        }
        if (strpos($value, '[') !== FALSE) {

          // Token in default value, do not validate.
          return;
        }
      }
    }
    $items
      ->defaultValuesFormValidate($form['default_value'], $form, $form_state);
  }
}