--- a/core/lib/Drupal/Core/Datetime/Element/Datelist.php +++ b/core/lib/Drupal/Core/Datetime/Element/Datelist.php @@ -305,9 +305,15 @@ $form_state->setValueForElement($element, NULL); } // If there's empty input and the field is required, set an error. - elseif (empty($input['year']) && empty($input['month']) && empty($input['day']) && $element['#required']) { - $form_state->setError($element, t('The %field date is required.')); + elseif ($element['#required']) { + foreach (array('year', 'month', 'day') as $required_field) { + if (empty($input[$required_field])) { + $form_state->setError($element, t('The %field date is required.', array( + '%field' => $required_field) + )); - } + } + } + } else { // If the input is valid, set it. $date = $input['object']; @@ -316,7 +322,9 @@ } // If the input is invalid, set an error. else { - $form_state->setError($element, t('The %field date is invalid.')); + $form_state->setError($element, t('The %field date is invalid.', array( + '%field' => empty($element['#title']) ? $element['#id'] : $element['#title'] + ))); } } }