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

Правило NegativeOrZero

Правило NegativeOrZero относится к секции form и используется как ограничение валидации. Оно вешается на свойство сущности или на поле формы и разрешает только значения, которые меньше нуля или равны нулю. Если значение положительное, валидация завершится ошибкой. Правило удобно применять для скидок, долгов, корректировок баланса и других величин, которые не должны быть положительными.

Синтаксис

#[NegativeOrZero]

Пример

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

<?php namespace AppEntity; use SymfonyComponentValidatorConstraintsNegativeOrZero; class Article { #[NegativeOrZero] private int $amount = 0; public function getAmount(): int { return $this->amount; } public function setAmount(int $amount): void { $this->amount = $amount; } } ?>

Теперь создадим форму для этой сущности:

<?php namespace AppForm; use AppEntityArticle; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeIntegerType; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('amount', IntegerType::class); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => Article::class, ]); } } ?>

Пример

Давайте проверим валидацию для отрицательного значения:

<?php namespace AppController; use AppEntityArticle; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(Request $request): Response { $article = new Article(); $article->setAmount(-5); $form = $this->createForm(ArticleType::class, $article); $form->submit(['amount' => -5]); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

valid

Пример

Давайте проверим валидацию для нуля:

<?php namespace AppController; use AppEntityArticle; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(Request $request): Response { $article = new Article(); $article->setAmount(0); $form = $this->createForm(ArticleType::class, $article); $form->submit(['amount' => 0]); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

valid

Пример

Давайте проверим валидацию для положительного значения:

<?php namespace AppController; use AppEntityArticle; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(Request $request): Response { $article = new Article(); $article->setAmount(5); $form = $this->createForm(ArticleType::class, $article); $form->submit(['amount' => 5]); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

invalid

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

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