Метод createBuilder класса FormFactory
Метод createBuilder класса FormFactory создаёт экземпляр FormBuilderInterface, который используется для программного построения формы. Первым параметром передаётся тип формы (класс типа или его строковое имя), вторым - начальные данные, а третьим - массив опций формы. В отличие от метода create, который сразу возвращает готовую форму, createBuilder возвращает построитель, что даёт возможность до создания формы добавить или изменить поля.
Синтаксис
$res = $factory->createBuilder($type, $data = null, array $options = []);
Пример
Давайте создадим форму с одним полем через построитель:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/form', name: 'article_form')]
public function form(FormFactoryInterface $factory): Response
{
$builder = $factory->createBuilder();
$builder->add('title', TextType::class);
$form = $builder->getForm();
return new Response('Form created');
}
}
?>
Результат выполнения кода:
"Form created"
Пример
Давайте передадим начальные данные и опции формы:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentFormFormFactoryInterface;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/form-data', name: 'article_form_data')]
public function formData(FormFactoryInterface $factory): Response
{
$data = [
'title' => 'article',
];
$builder = $factory->createBuilder(
null,
$data,
['method' => 'POST']
);
$builder->add('title', TextType::class);
$form = $builder->getForm();
return new Response($form->getData()['title']);
}
}
?>
Результат выполнения кода:
"article"
Смотрите также
-
класс
FormFactory,
который создаёт формы и построители форм -
метод
create,
который сразу возвращает готовую форму -
метод
createNamedBuilder,
который создаёт построитель с заданным именем -
метод
createNamed,
который создаёт именованную форму