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

Правило Regex

Правило Regex относится к ограничениям (constraints) и вешается на поле формы или свойство сущности. Оно проверяет, что значение соответствует заданному регулярному выражению. Первым параметром передаётся шаблон регулярного выражения. Если значение не совпадает с шаблоном, форма считается невалидной, а к полю прикрепляется сообщение об ошибке.

Синтаксис

#[Assert\Regex(pattern: '/шаблон/', message: 'текст ошибки')]

Пример

Давайте создадим форму с полем code и навесим на него правило Regex, разрешающее только латинские буквы:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentValidatorConstraints as Assert; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('code', TextType::class, [ 'constraints' => [ new Assert\Regex([ 'pattern' => '/^[a-z]+$/', 'message' => 'Код может содержать только строчные латинские буквы.', ]), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([]); } } ?>

Пример

Давайте обработаем форму в контроллере и выведем результат проверки:

<?php namespace AppController; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(Request $request): Response { $form = $this->createForm(ArticleType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { return new Response('form is valid'); } return new Response('form is invalid'); } } ?>

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

"form is valid"

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

"form is invalid"

Пример

Давайте навесим правило Regex прямо на свойство сущности:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; use SymfonyComponentValidatorConstraints as Assert; #[ORM\Entity] class Article { #[ORM\Column(type: 'string', length: 255)] #[Assert\Regex( pattern: '/^[a-z]+$/', message: 'Значение может содержать только строчные латинские буквы.', )] private string $code = ''; public function getCode(): string { return $this->code; } public function setCode(string $code): self { $this->code = $code; return $this; } } ?>

Пример

Давайте используем параметр match со значением false, чтобы значение, наоборот, не совпадало с шаблоном:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentValidatorConstraints as Assert; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('login', TextType::class, [ 'constraints' => [ new Assert\Regex([ 'pattern' => '/^admin$/', 'match' => false, 'message' => 'Логин admin запрещён.', ]), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([]); } } ?>

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

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