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

Правило Positive

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

Синтаксис

#[Positive(message: 'message')]

Пример

Давайте создадим форму с полем quantity и повесим на него правило Positive:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\Positive; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('quantity', IntegerType::class, [ 'constraints' => [ new Positive([ 'message' => 'The value must be positive.', ]), ], ]); } } ?>

Пример

Давайте отправим в форму значение 0 и проверим, что вернёт валидация:

<?php namespace App\Controller; use App\Form\ArticleType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(Request $request): Response { $form = $this->createForm(ArticleType::class); $form->handleRequest($request); if ($form->isSubmitted()) { if ($form->isValid()) { return new Response('valid'); } $errors = $form->getErrors(true); foreach ($errors as $error) { return new Response($error->getMessage()); } } return $this->render('article/form.html.twig', [ 'form' => $form, ]); } } ?>

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

"The value must be positive."

Пример

Давайте отправим в форму значение 5 и проверим результат валидации:

<?php namespace App\Controller; use App\Form\ArticleType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(Request $request): Response { $form = $this->createForm(ArticleType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { return new Response('valid'); } return $this->render('article/form.html.twig', [ 'form' => $form, ]); } } ?>

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

"valid"

Пример

Давайте используем правило Positive вместе с правилом LessThanOrEqual, чтобы ограничить значение сверху:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\LessThanOrEqual; use Symfony\Component\Validator\Constraints\Positive; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('quantity', IntegerType::class, [ 'constraints' => [ new Positive([ 'message' => 'The value must be positive.', ]), new LessThanOrEqual([ 'value' => 100, 'message' => 'The value must be less than or equal to {{ compared_value }}.', ]), ], ]); } } ?>

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

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