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

Правило Range

Правило Range относится к ограничениям валидации Symfony и вешается на поле формы или свойство сущности. Оно проверяет, что переданное значение входит в заданный диапазон. Правило принимает параметр min - нижнюю границу и max - верхнюю границу. Границы можно не указывать: тогда проверяется только одна из сторон диапазона. Правило работает с числами, а также с датами и временем, если задать их в виде строки.

Синтаксис

#[Range(min: min, max: max)]

Пример

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

<?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\Range; class UserType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('age', IntegerType::class, [ 'constraints' => [ new Range([ 'min' => 18, 'max' => 65, ]), ], ]); } } ?>

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints\Range; class UserController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $constraint = new Range(['min' => 18, 'max' => 65]); $res = $validator->validate(20, $constraint); return new Response((string) count($res)); } } ?>

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

"0"

Пример

Давайте передадим значение, которое выходит за границы диапазона:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints\Range; class UserController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $constraint = new Range(['min' => 18, 'max' => 65]); $res = $validator->validate(10, $constraint); return new Response($res[0]->getMessage()); } } ?>

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

"This value should be between 18 and 65."

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints\Range; class UserController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $constraint = new Range(['min' => 0]); $res = $validator->validate(5, $constraint); return new Response((string) count($res)); } } ?>

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

"0"

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

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