Метод getData класса Form
Метод getData класса Form возвращает данные,
которые в данный момент привязаны к форме. Чаще всего
метод вызывается после того, как форма была отправлена
и обработана через handleRequest. Возвращаемое
значение зависит от типа формы: для обычной формы это
объект сущности или массив, для составной формы -
объект с вложенными данными. Параметров метод не принимает.
Синтаксис
$form->getData()
Пример
Давайте создадим простую форму, отправим её и получим
данные через метод getData:
<?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\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$form = $this->createFormBuilder()
->add('title', TextType::class)
->add('save', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$res = $form->getData();
return new Response($res['title']);
}
return $this->render('article/form.html.twig', [
'form' => $form,
]);
}
}
?>
Результат выполнения кода для отправленной формы
со значением 'abcde' в поле title:
abcde
Пример
Давайте рассмотрим форму, привязанную к сущности.
Метод getData вернёт объект этой сущности:
<?php
namespace App\Controller;
use App\Entity\Article;
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\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/edit', name: 'article_edit')]
public function edit(Request $request): Response
{
$article = new Article();
$article->setTitle('hello');
$article->setViews(1);
$form = $this->createFormBuilder($article)
->add('title', TextType::class)
->add('views', IntegerType::class)
->add('save', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$res = $form->getData();
return new Response($res->getTitle());
}
return $this->render('article/edit.html.twig', [
'form' => $form,
]);
}
}
?>
Результат выполнения кода для отправленной формы
со значением 'article' в поле title:
article
Пример
Давайте посмотрим, что вернёт метод getData
для формы с несколькими полями:
<?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\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/create', name: 'article_create')]
public function create(Request $request): Response
{
$form = $this->createFormBuilder()
->add('title', TextType::class)
->add('views', IntegerType::class)
->add('published', CheckboxType::class)
->add('save', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$res = $form->getData();
return new Response(json_encode($res));
}
return $this->render('article/create.html.twig', [
'form' => $form,
]);
}
}
?>
Результат выполнения кода после отправки формы:
{"title":"abcde","views":5,"published":true}
Смотрите также
-
класс
Form,
который представляет форму в Symfony -
метод
handleRequest,
который обрабатывает отправленную форму -
метод
isValid,
который проверяет валидность формы -
метод
setData,
который устанавливает данные формы