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

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

Метод getErrors класса Form возвращает массив ошибок, возникших при валидации формы или её отдельных полей. Метод не принимает обязательных параметров и возвращает коллекцию объектов FormError. Ошибки появляются после вызова метода submit, если переданные данные не прошли проверку ограничениями валидации.

Каждый объект FormError содержит сообщение об ошибке, которое можно получить через метод getMessage. Если форма не отправлялась или данные корректны, метод возвращает пустой массив.

Синтаксис

$form->getErrors()

Пример

Давайте создадим форму с ограничением NotBlank и посмотрим, какие ошибки вернёт метод getErrors при пустом значении:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; 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; use Symfony\Component\HttpFoundation\Request; class FormController extends AbstractController { public function index(Request $request): Response { $builder = $this->createFormBuilder(); $builder->add('title', TextType::class, [ 'constraints' => [ new NotBlank(), ], ]); $builder->add('send', SubmitType::class); $form = $builder->getForm(); $form->submit(['title' => '']); $res = []; foreach ($form->getErrors() as $error) { $res[] = $error->getMessage(); } return new Response(json_encode($res)); } } ?>

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

["This value should not be blank."]

Пример

Давайте отправим корректные данные и убедимся, что массив ошибок пуст:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; 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 FormController extends AbstractController { public function index(): Response { $builder = $this->createFormBuilder(); $builder->add('title', TextType::class, [ 'constraints' => [ new NotBlank(), ], ]); $builder->add('send', SubmitType::class); $form = $builder->getForm(); $form->submit(['title' => 'abcde']); $res = []; foreach ($form->getErrors() as $error) { $res[] = $error->getMessage(); } return new Response(json_encode($res)); } } ?>

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

[]

Пример

Давайте получим ошибки не всей формы, а конкретного поля через метод get, а затем вызовем у него getErrors:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; 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 FormController extends AbstractController { public function index(): Response { $builder = $this->createFormBuilder(); $builder->add('title', TextType::class, [ 'constraints' => [ new Length(['min' => 5]), ], ]); $builder->add('send', SubmitType::class); $form = $builder->getForm(); $form->submit(['title' => 'ab']); $res = []; foreach ($form->get('title')->getErrors() as $error) { $res[] = $error->getMessage(); } return new Response(json_encode($res)); } } ?>

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

["This value is too short. It should have 5 characters or more."]

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

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