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

Метод isValid класса Form

Метод isValid класса Form возвращает булево значение true или false в зависимости от того, прошла ли форма валидацию. Метод следует вызывать только после того, как форма была отправлена через handleRequest или submit. Если форма не была отправлена, метод isValid выбросит исключение LogicException. Валидация выполняется на основе ограничений, заданных в сущности или в конфигурации формы.

Синтаксис

public function isValid(): bool

Пример

Давайте создадим простую форму с полем name и проверим её валидность после отправки:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Validator\Constraints\NotBlank; class ArticleController extends AbstractController { public function index(Request $request): Response { $form = $this->createFormBuilder() ->add('name', TextType::class, [ 'constraints' => [ new NotBlank(), ], ]) ->add('save', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); return new Response('Form is valid. Name: ' . $data['name']); } return $this->render('article/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

Если отправить форму с пустым полем name, метод isValid вернёт false, и форма будет отображена заново с ошибками валидации.

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

"Form is valid. Name: abcde"

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Validator\Constraints\Length; class ArticleController extends AbstractController { public function index(Request $request): Response { $form = $this->createFormBuilder() ->add('text', TextType::class, [ 'constraints' => [ new Length([ 'min' => 5, 'max' => 10, ]), ], ]) ->add('save', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); return new Response('Text: ' . $data['text']); } return $this->render('article/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

Если ввести текст длиной менее 5 или более 10 символов, метод isValid вернёт false и форма покажет ошибку.

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

"Text: abcde"

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

  • метод isSubmitted,
    который проверяет, была ли форма отправлена
  • метод handleRequest,
    который обрабатывает запрос и заполняет форму данными
  • метод getErrors,
    который возвращает список ошибок валидации формы
  • ограничение NotBlank,
    которое проверяет, что поле не пустое
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить