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

Правило GreaterThan

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

Синтаксис

new GreaterThan(value)

Пример

Давайте создадим форму с полем age и повесим на него правило GreaterThan со значением 18:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Validator\Constraints\GreaterThan; use Symfony\Component\HttpFoundation\Request; class UserController extends AbstractController { public function index(Request $request): Response { $form = $this->createFormBuilder() ->add('age', IntegerType::class, [ 'constraints' => [ new GreaterThan(18), ], ]) ->add('submit', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); return new Response('Age: ' . $data['age']); } return $this->render('user/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

Если ввести число 25, форма успешно пройдёт валидацию:

Age: 25

Если ввести число 15, появится сообщение об ошибке:

This value should be greater than 18.

Пример

Давайте зададим собственное сообщение об ошибке через опцию message:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Validator\Constraints\GreaterThan; use Symfony\Component\HttpFoundation\Request; class ProductController extends AbstractController { public function index(Request $request): Response { $form = $this->createFormBuilder() ->add('price', IntegerType::class, [ 'constraints' => [ new GreaterThan([ 'value' => 100, 'message' => 'The price must be greater than {{ compared_value }}.', ]), ], ]) ->add('submit', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); return new Response('Price: ' . $data['price']); } return $this->render('product/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

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

The price must be greater than 100.

Пример

Давайте используем сущность с правилом GreaterThan, заданным через атрибут Assert:

<?php namespace App\Entity; use Symfony\Component\Validator\Constraints as Assert; class Article { #[Assert\GreaterThan(0)] private int $quantity = 0; public function getQuantity(): int { return $this->quantity; } public function setQuantity(int $quantity): self { $this->quantity = $quantity; return $this; } } ?>

Давайте создадим форму для этой сущности и проверим валидацию:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; class ArticleController extends AbstractController { public function index(Request $request): Response { $article = new Article(); $form = $this->createFormBuilder($article) ->add('quantity', IntegerType::class) ->add('submit', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { return new Response('Quantity: ' . $article->getQuantity()); } return $this->render('article/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

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

Quantity: 5

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

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