РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
308 of 1361 menu

Правило Email

Правило Email вешается на поле формы и проверяет, что введённое значение является корректным email-адресом. Правило можно использовать как в виде атрибута для сущности, так и в опциях поля формы. При нарушении правила форма считается невалидной, а пользователю показывается сообщение об ошибке.

Синтаксис

#[Email( message: 'текст ошибки', mode: 'html5' | 'strict' | 'loose', normalizer: callable, )]

Пример

Давайте создадим сущность с полем email и повесим на него правило Email:

<?php namespace App\Entity; use Symfony\Component\Validator\Constraints as Assert; class User { #[Assert\Email( message: 'The email {{ value }} is not a valid email.', )] private string $email = ''; public function getEmail(): string { return $this->email; } public function setEmail(string $email): void { $this->email = $email; } } ?>

Пример

Давайте создадим форму на основе этой сущности и проверим значение поля email:

<?php namespace App\Controller; use App\Entity\User; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; class UserController extends AbstractController { public function create(Request $request): Response { $user = new User(); $form = $this->createFormBuilder($user) ->add('email', EmailType::class) ->add('save', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { return new Response('email is valid'); } return $this->render('user/create.html.twig', [ 'form' => $form->createView(), ]); } } ?>

Пример

Давайте проверим значение поля email вручную с помощью валидатора:

<?php namespace App\Controller; use App\Entity\User; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; class UserController extends AbstractController { public function check(ValidatorInterface $validator): Response { $user = new User(); $user->setEmail('abcde'); $errors = $validator->validate($user); if (count($errors) > 0) { return new Response((string) $errors); } return new Response('email is valid'); } } ?>

Результат выполнения кода для значения 'abcde':

Object(App\Entity\User).email: The email "abcde" is not a valid email.

Пример

Давайте укажем режим проверки mode со значением 'strict':

<?php namespace App\Entity; use Symfony\Component\Validator\Constraints as Assert; class User { #[Assert\Email( message: 'The email {{ value }} is not a valid email.', mode: 'strict', )] private string $email = ''; public function getEmail(): string { return $this->email; } public function setEmail(string $email): void { $this->email = $email; } } ?>

Результат выполнения кода для значения 'user@localhost' в строгом режиме:

Object(App\Entity\User).email: The email "user@localhost" is not a valid email.

Смотрите также

  • правило NotBlank,
    которое проверяет, что поле не пустое
  • правило Length,
    которое проверяет длину строки
  • правило Regex,
    которое проверяет значение по регулярному выражению
  • тип поля EmailType,
    который создаёт поле для ввода email
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить