Метод add
Метод add класса Form добавляет новое поле в форму.
Первым параметром передаётся имя поля, вторым - тип поля,
третьим - массив опций. Метод возвращает сам объект формы,
поэтому вызовы можно объединять в цепочку.
Синтаксис
$form->add(string $name, string $type = null, array $options = [])
Пример
Давайте создадим форму с одним текстовым полем:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/form', name: 'article_form')]
public function form(): Response
{
$form = $this->createFormBuilder()
->add('title', TextType::class)
->getForm();
return $this->render('article/form.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Результат выполнения кода в шаблоне:
{{ form_start(form) }}
{{ form_row(form.title) }}
{{ form_end(form) }}
Результат выполнения кода:
<input type="text" id="form_title" name="form[title]">
Пример
Давайте добавим поле с опциями - подпись и обязательность:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/form', name: 'article_form')]
public function form(): Response
{
$form = $this->createFormBuilder()
->add('title', TextType::class, [
'label' => 'Article title',
'required' => false,
])
->getForm();
return $this->render('article/form.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Результат выполнения кода в шаблоне:
{{ form_start(form) }}
{{ form_row(form.title) }}
{{ form_end(form) }}
Результат выполнения кода:
<label for="form_title">Article title</label>
<input type="text" id="form_title" name="form[title]">
Пример
Давайте добавим несколько полей цепочкой вызовов:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormExtensionCoreTypeTextareaType;
use SymfonyComponentFormExtensionCoreTypeIntegerType;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/form', name: 'article_form')]
public function form(): Response
{
$form = $this->createFormBuilder()
->add('title', TextType::class)
->add('content', TextareaType::class)
->add('views', IntegerType::class)
->getForm();
return $this->render('article/form.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Результат выполнения кода в шаблоне:
{{ form_start(form) }}
{{ form_row(form.title) }}
{{ form_row(form.content) }}
{{ form_row(form.views) }}
{{ form_end(form) }}
Результат выполнения кода:
<input type="text" id="form_title" name="form[title]">
<textarea id="form_content" name="form[content]"></textarea>
<input type="number" id="form_views" name="form[views]">
Смотрите также
-
класс
Form,
который представляет собой Symfony-форму -
метод
remove,
который удаляет поле из формы -
метод
get,
который возвращает поле формы по имени -
метод
createView,
который создаёт представление формы для шаблона