diff --git a/core/lib/Drupal/Core/Render/Element/Table.php b/core/lib/Drupal/Core/Render/Element/Table.php index 2da6ef9..2c42564 100644 --- a/core/lib/Drupal/Core/Render/Element/Table.php +++ b/core/lib/Drupal/Core/Render/Element/Table.php @@ -70,6 +70,7 @@ public function getInfo() { '#responsive' => TRUE, '#multiple' => TRUE, '#js_select' => TRUE, + '#error_no_inline_message' => TRUE, '#process' => array( array($class, 'processTable'), ), @@ -211,6 +212,7 @@ public static function processTable(&$element, FormStateInterface $form_state, & '#wrapper_attributes' => array( 'class' => array('table-select'), ), + '#error_no_inline_message' => TRUE, ); if ($element['#multiple']) { $row['select']['#default_value'] = isset($value[$key]) ? $key : NULL; diff --git a/core/modules/inline_form_errors/inline_form_errors.module b/core/modules/inline_form_errors/inline_form_errors.module index 52e572d..74ac8a6 100644 --- a/core/modules/inline_form_errors/inline_form_errors.module +++ b/core/modules/inline_form_errors/inline_form_errors.module @@ -53,7 +53,7 @@ function inline_form_errors_preprocess_datetime_wrapper(&$variables) { */ function _inline_form_errors_set_errors(&$variables) { $element = $variables['element']; - if (!empty($element['#errors']) && empty($element['#error_no_message'])) { + if (!empty($element['#errors']) && empty($element['#error_no_message']) && empty($element['#error_no_inline_message'])) { $variables['errors'] = $element['#errors']; } } diff --git a/core/modules/inline_form_errors/src/FormErrorHandler.php b/core/modules/inline_form_errors/src/FormErrorHandler.php index 8e0f1b8..96bf875 100644 --- a/core/modules/inline_form_errors/src/FormErrorHandler.php +++ b/core/modules/inline_form_errors/src/FormErrorHandler.php @@ -68,6 +68,10 @@ protected function displayErrorMessages(array $form, FormStateInterface $form_st // Only show links for elements with an ID. $has_id = !empty($form_element['#id']); + // Skip errors which should not be displayed inline. + if (!empty($form_element['#error_no_inline_message'])) { + continue; + } // 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'])) { diff --git a/core/modules/system/src/Form/ModulesUninstallForm.php b/core/modules/system/src/Form/ModulesUninstallForm.php index a06810e..e68e88e 100644 --- a/core/modules/system/src/Form/ModulesUninstallForm.php +++ b/core/modules/system/src/Form/ModulesUninstallForm.php @@ -120,7 +120,12 @@ public function buildForm(array $form, FormStateInterface $form_state) { uasort($uninstallable, 'system_sort_modules_by_info_name'); $validation_reasons = $this->moduleInstaller->validateUninstall(array_keys($uninstallable)); - $form['uninstall'] = array('#tree' => TRUE); + $form['uninstall'] = array( + '#tree' => TRUE, + // Don't show inline error messages, to prevent messages repeating for + // every module. + '#error_no_inline_message' => TRUE, + ); foreach ($uninstallable as $module_key => $module) { $name = $module->info['name'] ?: $module->getName(); $form['modules'][$module->getName()]['#module_name'] = $name; @@ -131,6 +136,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#type' => 'checkbox', '#title' => $this->t('Uninstall @module module', array('@module' => $name)), '#title_display' => 'invisible', + '#error_no_inline_message' => TRUE, ); // If a validator returns reasons not to uninstall a module,