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

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

Метод setData класса Form устанавливает данные в форму. Первым параметром передаётся значение, которое нужно записать в форму. Метод используется для предзаполнения формы данными перед её отображением, а также для изменения данных формы после её создания. Метод возвращает объект формы, что позволяет использовать цепочку вызовов.

Синтаксис

$form->setData($data);

Параметр $data может быть массивом, объектом или скалярным значением. Тип данных зависит от типа формы. Для формы, связанной с сущностью, передаётся объект сущности. Для простой формы - массив или скалярное значение.

Пример

Давайте создадим форму и установим в неё данные с помощью метода setData:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\TextType; class ArticleController extends AbstractController { public function index(): Response { $form = $this->createFormBuilder() ->add('title', TextType::class) ->add('content', TextType::class) ->getForm(); $form->setData([ 'title' => 'article', 'content' => 'hello', ]); return $this->render('article/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

В результате форма будет предзаполнена значениями 'article' и 'hello'.

Пример

Давайте установим данные в форму, связанную с сущностью:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\TextType; class ArticleController extends AbstractController { public function index(): Response { $article = new Article(); $article->setTitle('article'); $article->setContent('hello'); $form = $this->createFormBuilder($article) ->add('title', TextType::class) ->add('content', TextType::class) ->getForm(); $form->setData($article); return $this->render('article/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

В результате форма будет предзаполнена данными из объекта Article.

Пример

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

<?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\FormType; use Symfony\Component\Form\Extension\Core\Type\TextType; class ArticleController extends AbstractController { public function index(Request $request): Response { $form = $this->createFormBuilder() ->add('title', TextType::class) ->add('content', TextType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $form->setData([ 'title' => 'user', 'content' => 'abcde', ]); } return $this->render('article/index.html.twig', [ 'form' => $form->createView(), ]); } } ?>

В результате после успешной отправки формы данные будут заменены на 'user' и 'abcde'.

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

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