public static function WebformEmailMultiple::validateWebformEmailMultiple in Webform 8.5
Same name and namespace in other branches
- 6.x src/Element/WebformEmailMultiple.php \Drupal\webform\Element\WebformEmailMultiple::validateWebformEmailMultiple()
Webform element validation handler for #type 'webform_email_multiple'.
File
- src/
Element/ WebformEmailMultiple.php, line 54
Class
- WebformEmailMultiple
- Provides a webform element for entering multiple comma delimited email addresses.
Namespace
Drupal\webform\ElementCode
public static function validateWebformEmailMultiple(&$element, FormStateInterface $form_state, &$complete_form) {
$value = trim($element['#value']);
$element['#value'] = $value;
$form_state
->setValueForElement($element, $value);
if ($value) {
$values = preg_split('/\\s*,\\s*/', $value);
// Validate email.
foreach ($values as $value) {
// Allow tokens to be included in multiple email list by skipping
// validation if a token is present.
if (!empty($element['#allow_tokens'] && preg_match('/\\[.+\\]/', $value))) {
continue;
}
if (!\Drupal::service('email.validator')
->isValid($value)) {
$form_state
->setError($element, t('The email address %mail is not valid.', [
'%mail' => $value,
]));
return;
}
}
// Validate cardinality.
if ($element['#cardinality'] && count($values) > $element['#cardinality']) {
if (isset($element['#cardinality_error'])) {
$form_state
->setError($element, $element['#cardinality_error']);
}
elseif (isset($element['#title'])) {
$t_args = [
'%name' => empty($element['#title']) ? $element['#parents'][0] : $element['#title'],
'@count' => $element['#cardinality'],
];
$error_message = \Drupal::translation()
->formatPlural($element['#cardinality'], '%name: this element cannot hold more than @count value.', '%name: this element cannot hold more than @count values.', $t_args);
$form_state
->setError($element, $error_message);
}
else {
$form_state
->setError($element);
}
}
}
}