Метод handleRequest класса Form
Метод handleRequest класса Form принимает объект Request и обрабатывает данные отправленной формы. Он определяет метод запроса (GET или POST), извлекает данные из запроса и передаёт их форме через метод submit. Первым параметром передаётся объект Request. Метод не возвращает значение, а изменяет состояние формы.
Синтаксис
$form->handleRequest($request);
Пример
Давайте создадим простую форму и обработаем её через handleRequest:
<?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;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$form = $this->createFormBuilder()
->add('name', TextType::class)
->add('save', SubmitType::class, ['label' => 'Send'])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return new Response('Hello ' . $data['name']);
}
return $this->render('article/index.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Результат выполнения кода при отправке формы с именем 'abcde':
Hello abcde
Пример
Давайте обработаем форму с несколькими полями и проверим валидность:
<?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\SubmitType;
use Symfony\Component\Validator\Constraints as Assert;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$form = $this->createFormBuilder()
->add('name', TextType::class, [
'constraints' => [new Assert\NotBlank()],
])
->add('age', IntegerType::class, [
'constraints' => [new Assert\Positive()],
])
->add('save', SubmitType::class, ['label' => 'Send'])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return new Response('Name: ' . $data['name'] . ', Age: ' . $data['age']);
}
return $this->render('article/index.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Результат выполнения кода при отправке формы с именем 'user' и возрастом 25:
Name: user, Age: 25
Смотрите также
-
класс
Form,
который представляет форму в Symfony -
метод
submit,
который отправляет данные в форму -
метод
isSubmitted,
который проверяет, была ли форма отправлена -
метод
isValid,
который проверяет валидность данных формы