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

Правило Cidr

Правило Cidr проверяет, принадлежит ли значение IP-адреса заданному диапазону в нотации CIDR. Первым параметром передаётся версия IP-протокола, вторым - массив разрешённых диапазонов. Правило вешается на поле формы и при несоответствии добавляет ошибку валидации.

Синтаксис

#[Cidr(version, ranges)]

Пример

Давайте создадим форму с полем ip и повесим на него правило Cidr для версии IPv4:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsCidr; class IpType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('ip', null, [ 'constraints' => [ new Cidr([ 'version' => 4, 'ranges' => ['192.168.0.0/24', '10.0.0.0/8'], ]), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

Пример

Давайте проверим адрес '192.168.0.5' - он должен успешно пройти валидацию, так как входит в диапазон '192.168.0.0/24':

<?php namespace AppController; use AppFormIpType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class IpController extends AbstractController { public function index(Request $request): Response { $form = $this->createForm(IpType::class); $form->submit(['ip' => '192.168.0.5']); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

"valid"

Пример

Давайте проверим адрес '8.8.8.8' - он не входит ни в один из указанных диапазонов, поэтому форма будет невалидной:

<?php namespace AppController; use AppFormIpType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class IpController extends AbstractController { public function index(Request $request): Response { $form = $this->createForm(IpType::class); $form->submit(['ip' => '8.8.8.8']); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

"invalid"

Пример

Давайте проверим IPv6-адрес '2001:db8::1' с версией протокола 6 и диапазоном '2001:db8::/32':

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsCidr; class IpType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('ip', null, [ 'constraints' => [ new Cidr([ 'version' => 6, 'ranges' => ['2001:db8::/32'], ]), ], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => null, ]); } } ?>

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

"valid"

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

  • правило Ip,
    которое проверяет корректность IP-адреса
  • правило Regex,
    которое проверяет строку по регулярному выражению
  • правило Hostname,
    которое проверяет корректность имени хоста
  • класс Form,
    который представляет форму в Symfony
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить