diff --git a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php index 937491f..da1e6b8 100644 --- a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php +++ b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php @@ -150,10 +150,9 @@ public static function validateUriElement($element, FormStateInterface $form_sta */ public static function validateTitleElement(&$element, FormStateInterface $form_state, $form) { if ($element['uri']['#value'] !== '' && $element['title']['#value'] === '') { - $element['title']['#required'] = TRUE; // We expect the field name placeholder value to be wrapped in t() here, // so it won't be escaped again as it's already marked safe. - $form_state->setError($element['title'], t('@name field is required.', ['@name' => $element['title']['#title']])); + $form_state->setError($element['title'], t('@name field is required if you enter a URL.', ['@name' => $element['title']['#title']])); } } @@ -222,6 +221,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen // non-empty. Omit the validation on the field edit form, since the field // settings cannot be saved otherwise. if (!$this->isDefaultValueWidget($form_state) && $this->getFieldSetting('title') == DRUPAL_REQUIRED) { + $element['title']['#description'] = $this->t('The link text will be required if you enter a URL.'); $element['#element_validate'][] = [get_called_class(), 'validateTitleElement']; } diff --git a/core/modules/link/tests/src/Functional/LinkFieldTest.php b/core/modules/link/tests/src/Functional/LinkFieldTest.php index 104a386..8717b9d 100644 --- a/core/modules/link/tests/src/Functional/LinkFieldTest.php +++ b/core/modules/link/tests/src/Functional/LinkFieldTest.php @@ -285,14 +285,14 @@ public function testLinkTitle() { "{$field_name}[0][uri]" => 'http://www.example.com', ]; $this->drupalPostForm(NULL, $edit, t('Save')); - $this->assertText(t('@name field is required.', ['@name' => t('Link text')])); + $this->assertText(t('@name field is required if you enter a URL.', ['@name' => t('Link text')])); // Verify that the link text is not required, if the URL is empty. $edit = [ "{$field_name}[0][uri]" => '', ]; $this->drupalPostForm(NULL, $edit, t('Save')); - $this->assertNoText(t('@name field is required.', ['@name' => t('Link text')])); + $this->assertNoText(t('@name field is required if you enter a URL.', ['@name' => t('Link text')])); // Verify that a URL and link text meets requirements. $this->drupalGet('entity_test/add'); @@ -301,7 +301,7 @@ public function testLinkTitle() { "{$field_name}[0][title]" => 'Example', ]; $this->drupalPostForm(NULL, $edit, t('Save')); - $this->assertNoText(t('@name field is required.', ['@name' => t('Link text')])); + $this->assertNoText(t('@name field is required if you enter a URL.', ['@name' => t('Link text')])); } } }