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

Правило Callback

Правило Callback позволяет задать собственную функцию валидации. Первым параметром передаётся callable-функция, которая получает значение поля и объект ExecutionContext для добавления ошибок валидации. Если функция добавляет ошибку, поле считается невалидным.

Синтаксис

new Callback(callback: callable)

Пример

Давайте создадим форму с полем text и проверим, что его значение не равно строке 'abcde':

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsCallback; use SymfonyComponentValidatorContextExecutionContextInterface; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('text', TextType::class, [ 'constraints' => [ new Callback(function ($value, ExecutionContextInterface $context) { if ($value === 'abcde') { $context->buildViolation('Invalid value') ->addViolation(); } }), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

Пример

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

<?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->submit(['text' => 'abcde']); if ($form->isValid()) { return new Response('valid'); } foreach ($form->getErrors(true) as $error) { return new Response($error->getMessage()); } return new Response(''); } } ?>

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

"Invalid value"

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

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