Implements Drupal\field\Plugin\Type\Widget\WidgetInterface::flagErrors().
Overrides WidgetBaseInterface::flagErrors
public function flagErrors(EntityInterface $entity, $langcode, array $items, array $form, array &$form_state) {
$field_name = $this->field['field_name'];
$field_state = field_form_get_state($form['#parents'], $field_name, $langcode, $form_state);
if (!empty($field_state['errors'])) {
// Locate the correct element in the the form.
$element = drupal_array_get_nested_value($form_state['complete_form'], $field_state['array_parents']);
// Only set errors if the element is accessible.
if (!isset($element['#access']) || $element['#access']) {
$definition = $this
->getDefinition();
$is_multiple = $definition['multiple_values'];
foreach ($field_state['errors'] as $delta => $delta_errors) {
// For a multiple-value widget, pass all errors to the main widget.
// For single-value widgets, pass errors by delta.
if ($is_multiple) {
$delta_element = $element;
}
else {
$original_delta = $field_state['original_deltas'][$delta];
$delta_element = $element[$original_delta];
}
foreach ($delta_errors as $error) {
$error_element = $this
->errorElement($delta_element, $error, $form, $form_state);
form_error($error_element, $error['message']);
}
}
// Reinitialize the errors list for the next submit.
$field_state['errors'] = array();
field_form_set_state($form['#parents'], $field_name, $langcode, $form_state, $field_state);
}
}
}