protected FormErrorHandler::displayErrorMessages(array $form, FormStateInterface $form_state)
Loops through and displays all form errors.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormErrorHandler::displayErrorMessages
File
- core/modules/inline_form_errors/src/FormErrorHandler.php, line 55
Class
- FormErrorHandler
- Produces inline form errors.
Namespace
Drupal\inline_form_errors
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | protected function displayErrorMessages( array $form , FormStateInterface $form_state ) { $error_links = []; $errors = $form_state ->getErrors(); // Loop through all form errors and check if we need to display a link. foreach ( $errors as $name => $error ) { $form_element = FormElementHelper::getElementByName( $name , $form ); $title = FormElementHelper::getElementTitle( $form_element ); // Only show links to erroneous elements that are visible. $is_visible_element = Element::isVisibleElement( $form_element ); // Only show links for elements that have a title themselves or have // children with a title. $has_title = ! empty ( $title ); // Only show links for elements with an ID. $has_id = ! empty ( $form_element [ '#id' ]); // Do not show links to elements with suppressed messages. Most often // their parent element is used for inline errors. if (! empty ( $form_element [ '#error_no_message' ])) { unset( $errors [ $name ]); } elseif ( $is_visible_element && $has_title && $has_id ) { $error_links [] = $this ->l( $title , Url::fromRoute( '<none>' , [], [ 'fragment' => $form_element [ '#id' ], 'external' => TRUE])); unset( $errors [ $name ]); } } // Set normal error messages for all remaining errors. foreach ( $errors as $error ) { $this ->drupalSetMessage( $error , 'error' ); } if (! empty ( $error_links )) { $render_array = [ [ '#markup' => $this ->formatPlural( count ( $error_links ), '1 error has been found: ' , '@count errors have been found: ' ), ], [ '#theme' => 'item_list' , '#items' => $error_links , '#context' => [ 'list_style' => 'comma-list' ], ], ]; $message = $this ->renderer->renderPlain( $render_array ); $this ->drupalSetMessage( $message , 'error' ); } } |
Please login to continue.