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

Правило Ip

Правило Ip относится к секции form и проверяет, что значение поля является допустимым IP-адресом. По умолчанию принимаются адреса как IPv4, так и IPv6. Правило вешается на поле формы через опцию constraints. В параметрах можно указать версию протокола ipv4 или ipv6, а также флаг normalizer для приведения адреса к каноническому виду.

Синтаксис

new Ip([ 'version' => 'ipv4', 'normalizer' => 'trim', 'message' => '...', ])

Пример

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

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\Ip; class IpType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('ip', TextType::class, [ 'constraints' => [ new Ip(), ], ]); } } ?>

Пример

Давайте отправим в поле корректный IPv4-адрес:

<?php namespace App\Controller; use App\Form\IpType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class IpController extends AbstractController { public function index(Request $request): Response { $form = $this->createForm(IpType::class); $form->submit(['ip' => '192.168.0.1']); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

"valid"

Пример

Давайте отправим в поле некорректный IP-адрес:

<?php namespace App\Controller; use App\Form\IpType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class IpController extends AbstractController { public function index(Request $request): Response { $form = $this->createForm(IpType::class); $form->submit(['ip' => '999.999.999.999']); if ($form->isValid()) { return new Response('valid'); } return new Response('invalid'); } } ?>

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

"invalid"

Пример

Давайте ограничим правило только IPv6, передав параметр version:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\Ip; class IpType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('ip', TextType::class, [ 'constraints' => [ new Ip([ 'version' => 'ipv6', ]), ], ]); } } ?>

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

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