function ListItemBase::validateAllowedValues

Same name and namespace in other branches
  1. 9 core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php \Drupal\options\Plugin\Field\FieldType\ListItemBase::validateAllowedValues()
  2. 10 core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php \Drupal\options\Plugin\Field\FieldType\ListItemBase::validateAllowedValues()
  3. 11.x core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php \Drupal\options\Plugin\Field\FieldType\ListItemBase::validateAllowedValues()

#element_validate callback for options field allowed values.

Parameters

$element: An associative array containing the properties and children of the generic form element.

$form_state: The current state of the form for the form this element belongs to.

See also

\Drupal\Core\Render\Element\FormElement::processPattern()

File

core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php, line 133

Class

ListItemBase
Plugin base class inherited by the options field types.

Namespace

Drupal\options\Plugin\Field\FieldType

Code

public static function validateAllowedValues($element, FormStateInterface $form_state) {
    $values = static::extractAllowedValues($element['#value'], $element['#field_has_data']);
    if (!is_array($values)) {
        $form_state->setError($element, t('Allowed values list: invalid input.'));
    }
    else {
        // Check that keys are valid for the field type.
        foreach ($values as $key => $value) {
            if ($error = static::validateAllowedValue($key)) {
                $form_state->setError($element, $error);
                break;
            }
        }
        // Prevent removing values currently in use.
        if ($element['#field_has_data']) {
            $lost_keys = array_keys(array_diff_key($element['#allowed_values'], $values));
            if (_options_values_in_use($element['#entity_type'], $element['#field_name'], $lost_keys)) {
                $form_state->setError($element, t('Allowed values list: some values are being removed while currently in use.'));
            }
        }
        $form_state->setValueForElement($element, $values);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.