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

Правило EqualTo

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

Синтаксис

#[EqualTo(value: mixed, message: string)]

Пример

Давайте создадим форму с полем для ввода кода подтверждения. Значение должно быть равно строке 'abcde':

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsEqualTo; use SymfonyComponentFormExtensionCoreTypeTextType; class ConfirmType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('code', TextType::class, [ 'constraints' => [ new EqualTo([ 'value' => 'abcde', 'message' => 'The code must be exactly abcde.', ]), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

Если пользователь введёт 'abcde', форма пройдёт валидацию. При вводе любого другого значения появится сообщение об ошибке.

Пример

Давайте проверим работу правила в контроллере. Отправим значение 'hello', которое не совпадает с ожидаемым:

<?php namespace AppController; use AppFormConfirmType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ConfirmController extends AbstractController { #[Route('/confirm', name: 'app_confirm')] public function confirm(Request $request): Response { $form = $this->createForm(ConfirmType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { return new Response('Form is valid.'); } $errors = $form->getErrors(true, false); foreach ($errors as $error) { echo $error->getMessage(); } return new Response('Form is invalid.'); } } ?>

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

"The code must be exactly abcde."

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

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