РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
438 of 1361 menu

Метод add класса FormBuilder

Метод add класса FormBuilder добавляет новое поле в форму. Первым параметром передаётся имя поля, вторым - тип поля (класс FieldType), третьим - массив опций поля. Метод возвращает объект FormBuilder, поэтому вызовы можно выстраивать в цепочку.

Синтаксис

public function add(string $name, string $type = TextType::class, array $options = []): self

Пример

Давайте создадим форму с одним текстовым полем:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeTextType; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('title', TextType::class); } } ?>

Пример

Давайте добавим поле вместе с массивом опций:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeTextType; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('title', TextType::class, [ 'label' => 'Article title', 'required' => true, ]); } } ?>

Пример

Давайте выстроим несколько вызовов метода add в цепочку:

<?php namespace AppForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentFormExtensionCoreTypeTextareaType; use SymfonyComponentFormExtensionCoreTypeIntegerType; use SymfonyComponentFormExtensionCoreTypeCheckboxType; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('title', TextType::class) ->add('content', TextareaType::class) ->add('views', IntegerType::class) ->add('published', CheckboxType::class, [ 'required' => false, ]); } } ?>

Пример

Давайте создадим форму в контроллере и выведем её на страницу:

<?php namespace AppController; use AppFormArticleType; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(): Response { $form = $this->createForm(ArticleType::class); return $this->render('article/form.html.twig', [ 'form' => $form->createView(), ]); } } ?>

Результат выполнения кода:

<form name="article" method="post"> <div> <label for="article_title">Title</label> <input type="text" id="article_title" name="article[title]"> </div> <div> <label for="article_content">Content</label> <textarea id="article_content" name="article[content]"></textarea> </div> <button type="submit">Save</button> </form>

Смотрите также

  • класс FormBuilder,
    который строит форму из набора полей
  • метод create,
    который создаёт поле без добавления в форму
  • метод get,
    который возвращает поле по имени
  • метод remove,
    который удаляет поле из формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить