diff -u b/core/lib/Drupal/Core/Render/Element/Email.php b/core/lib/Drupal/Core/Render/Element/Email.php --- b/core/lib/Drupal/Core/Render/Element/Email.php +++ b/core/lib/Drupal/Core/Render/Element/Email.php @@ -7,15 +7,18 @@ namespace Drupal\Core\Render\Element; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element; +use Egulias\EmailValidator\EmailValidator; /** * Provides a form input element for entering an email address. * * @FormElement("email") */ -class Email extends FormElement { +class Email extends FormElement implements ContainerInjectionInterface { /** * Defines the max length for an email address @@ -30,6 +33,32 @@ const EMAIL_MAX_LENGTH = 254; /** + * The email validator. + * + * @var \Egulias\EmailValidator\EmailValidator + */ + protected static $emailValidator; + + /** + * Constructs a new Email. + * + * @param \Egulias\EmailValidator\EmailValidator $email_validator + * The email validator. + */ + public function __construct(EmailValidator $email_validator) { + $this->emailValidator = $email_validator; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('email.validator') + ); + } + + /** * {@inheritdoc} */ public function getInfo() { @@ -64,7 +93,7 @@ $value = trim($element['#value']); $form_state->setValueForElement($element, $value); - if ($value !== '' && !\Drupal::service('email.validator')->isValid($value)) { + if ($value !== '' && !self::$emailValidator->isValid($value)) { $form_state->setError($element, t('The email address %mail is not valid.', array('%mail' => $value))); } } diff -u b/core/modules/contact/src/ContactFormEditForm.php b/core/modules/contact/src/ContactFormEditForm.php --- b/core/modules/contact/src/ContactFormEditForm.php +++ b/core/modules/contact/src/ContactFormEditForm.php @@ -8,19 +8,47 @@ namespace Drupal\contact; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\DependencyInjection\ContainerInjectionInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Entity\EntityForm; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Form\ConfigFormBaseTrait; use Drupal\Core\Form\FormStateInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Egulias\EmailValidator\EmailValidator; /** * Base form for contact form edit forms. */ -class ContactFormEditForm extends EntityForm { +class ContactFormEditForm extends EntityForm implements ContainerInjectionInterface { use ConfigFormBaseTrait; /** + * The email validator. + * + * @var \Egulias\EmailValidator\EmailValidator + */ + protected $emailValidator; + + /** + * Constructs a new ContactFormEditForm. + * + * @param \Egulias\EmailValidator\EmailValidator $email_validator + * The email validator. + */ + public function __construct(EmailValidator $email_validator) { + $this->emailValidator = $email_validator; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('email.validator') + ); + } + + /** * {@inheritdoc} */ protected function getEditableConfigNames() { @@ -92,7 +120,7 @@ foreach ($recipients as &$recipient) { $recipient = trim($recipient); - if (!\Drupal::service('email.validator')->isValid($recipient)) { + if (!$this->emailValidator->isValid($recipient)) { $form_state->setErrorByName('recipients', $this->t('%recipient is an invalid email address.', array('%recipient' => $recipient))); } }