Метод 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,
которое проверяет, что поле не пустое