You are here

public function EntityFormDisplay::flagWidgetsErrorsFromViolations in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php \Drupal\Core\Entity\Entity\EntityFormDisplay::flagWidgetsErrorsFromViolations()

Flags entity validation violations as form errors.

This method processes all violations passed, thus any violations not related to fields of the form display must be processed before this method is invoked.

The method flags constraint violations related to fields shown on the form as form errors on the correct form elements. Possibly pre-existing violations of hidden fields (so fields not appearing in the display) are ignored. Other, non-field related violations are passed through and set as form errors according to the property path of the violations.

Parameters

\Drupal\Core\Entity\EntityConstraintViolationListInterface $violations: The violations to flag.

array $form: The form structure where field elements are attached to. This might be a full form structure, or a sub-element of a larger form.

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

Overrides EntityFormDisplayInterface::flagWidgetsErrorsFromViolations

1 call to EntityFormDisplay::flagWidgetsErrorsFromViolations()
EntityFormDisplay::validateFormValues in core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php
Validates submitted widget values and sets the corresponding form errors.

File

core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php, line 261

Class

EntityFormDisplay
Configuration entity that contains widget options for all components of an entity form in a given form mode.

Namespace

Drupal\Core\Entity\Entity

Code

public function flagWidgetsErrorsFromViolations(EntityConstraintViolationListInterface $violations, array &$form, FormStateInterface $form_state) {
  $entity = $violations
    ->getEntity();
  foreach ($violations
    ->getFieldNames() as $field_name) {

    // Only show violations for fields that actually appear in the form, and
    // let the widget assign the violations to the correct form elements.
    if ($widget = $this
      ->getRenderer($field_name)) {
      $field_violations = $this
        ->movePropertyPathViolationsRelativeToField($field_name, $violations
        ->getByField($field_name));
      $widget
        ->flagErrors($entity
        ->get($field_name), $field_violations, $form, $form_state);
    }
  }
}