diff --git a/core/includes/form.inc b/core/includes/form.inc index 9e48ba5b09..3383ead668 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -485,7 +485,12 @@ function template_preprocess_form_element(&$variables) { $variables['label'] = ['#theme' => 'form_element_label']; $variables['label'] += array_intersect_key($element, array_flip(['#id', '#required', '#title', '#title_display'])); $variables['label']['#attributes'] = $element['#label_attributes']; - $variables['label']['#for'] = $element['#label_for']; + if (!empty($element['#label_for'])) { + $variables['label']['#for'] = $element['#label_for']; + if (!empty($element['#id'])) { + $variables['label']['#id'] = $element['#id'] . '--label'; + } + } $variables['children'] = $element['#children']; } diff --git a/core/modules/file/src/Tests/FileFieldDisplayTest.php b/core/modules/file/src/Tests/FileFieldDisplayTest.php index 1b7e534211..96556e29d0 100644 --- a/core/modules/file/src/Tests/FileFieldDisplayTest.php +++ b/core/modules/file/src/Tests/FileFieldDisplayTest.php @@ -105,6 +105,9 @@ public function testNodeDisplay() { $this->clickLink(t('Back to content editing')); $this->assertRaw($field_name . '[0][display]', 'First file appears as expected.'); $this->assertRaw($field_name . '[1][display]', 'Second file appears as expected.'); + + // Regression test. Verify the file fields don't contain duplicate HTML IDs. + $this->assertNoDuplicateIds(); } /**