Метод submit класса Form
Метод submit класса Form заполняет форму переданными данными и запускает процесс обработки формы. Первым параметром передаётся массив данных, например $_POST или $_GET, вторым необязательным параметром - очищать ли поля, третьим - нужно ли вызвать событие POST_SUBMIT.
Синтаксис
public function submit(array|string $submittedData, bool $clearMissing = true): static
Пример
Давайте создадим простую форму и отправим в неё данные через метод submit:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeSubmitType;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function index(Request $request, FormFactoryInterface $factory): Response
{
$form = $factory->createBuilder()
->add('title', TextType::class)
->add('send', SubmitType::class)
->getForm();
$form->submit(['title' => 'hello']);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return new Response($data['title']);
}
return new Response('invalid');
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте отправим данные из $_POST напрямую и проверим статус формы:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function index(Request $request, FormFactoryInterface $factory): Response
{
$form = $factory->createBuilder()
->add('title', TextType::class)
->getForm();
$form->submit($request->request->all());
$res = [
'submitted' => $form->isSubmitted(),
'valid' => $form->isValid(),
];
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода при пустом запросе:
{"submitted":true,"valid":true}
Смотрите также
-
класс
Form,
который представляет собой форму -
метод
handleRequest,
который заполняет форму из запроса -
метод
isSubmitted,
который проверяет, была ли форма отправлена -
метод
isValid,
который проверяет, прошла ли форма валидацию