public static function DateList::validateDatelist in Webform 8.5
Same name and namespace in other branches
- 6.x src/Plugin/WebformElement/DateList.php \Drupal\webform\Plugin\WebformElement\DateList::validateDatelist()
Override validation callback for a datelist element and set #required_error.
Parameters
array $element: The element being processed.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
array $complete_form: The complete form structure.
File
- src/
Plugin/ WebformElement/ DateList.php, line 269
Class
- DateList
- Provides a 'datelist' element.
Namespace
Drupal\webform\Plugin\WebformElementCode
public static function validateDatelist(&$element, FormStateInterface $form_state, &$complete_form) {
$has_required_error = !empty($element['#required']) && !empty($element['#required_error']);
if (!$has_required_error) {
DatelistElement::validateDatelist($element, $form_state, $complete_form);
return;
}
// Clone the $form_state so that we can capture and
// set #required_error message.
// Note: We are not using SubformState because we are just trying clone
// the $form_state.
$temp_form_state = clone $form_state;
// Validate the date list element.
DatelistElement::validateDatelist($element, $temp_form_state, $complete_form);
// Copy $temp_form_state errors to $form_state error and alter
// override default required error message is applicable.
$original_errors = $form_state
->getErrors();
$errors = $temp_form_state
->getErrors();
foreach ($errors as $name => $message) {
if (empty($original_errors[$name])) {
if ($message instanceof TranslatableMarkup && $message
->getUntranslatedString() === "The %field date is required.") {
$message = $element['#required_error'];
}
$form_state
->setErrorByName($name, $message);
}
}
}