Метод create класса FormBuilder
Метод create класса FormBuilder создаёт объект формы.
Первым параметром передаётся класс типа формы, вторым -
исходные данные для заполнения полей, третьим - массив опций формы.
Метод возвращает объект FormInterface, готовый к отображению
или обработке запроса.
Синтаксис
create(string $type, mixed $data = null, array $options = []): FormInterface
Пример
Давайте создадим простую форму на основе типа ArticleType:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/create', name: 'article_create')]
public function create(): Response
{
$form = $this->createForm(ArticleType::class);
return $this->render('article/create.html.twig', [
'form' => $form,
]);
}
}
?>
Пример
Давайте создадим форму через FormBuilder с передачей
исходных данных:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/edit', name: 'article_edit')]
public function edit(FormBuilderInterface $builder): Response
{
$data = [
'title' => 'abcde',
'content' => 'article',
];
$form = $builder->create(ArticleType::class, $data);
return $this->render('article/edit.html.twig', [
'form' => $form->getForm(),
]);
}
}
?>
Пример
Давайте создадим форму с передачей дополнительных опций:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/new', name: 'article_new')]
public function new(FormBuilderInterface $builder): Response
{
$options = [
'action' => '/article/save',
'method' => 'POST',
];
$form = $builder->create(ArticleType::class, null, $options);
return $this->render('article/new.html.twig', [
'form' => $form->getForm(),
]);
}
}
?>
Смотрите также
-
класс
FormBuilder,
который строит объекты форм -
метод
add,
который добавляет поле в форму -
метод
getForm,
который возвращает готовый объект формы -
метод
get,
который возвращает поле формы по имени