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

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

Метод get класса FormBuilder возвращает объект элемента формы (FormBuilderInterface) по его имени. Первым параметром передаётся имя элемента формы. Если элемент с таким именем не был добавлен ранее, метод выбросит исключение InvalidArgumentException. Метод удобно использовать, когда нужно изменить уже добавленный элемент: например, поменять его атрибуты, опции или добавить трансформер данных.

Синтаксис

public function get(string $name): FormBuilderInterface

Пример

Давайте создадим форму с двумя полями и получим поле title через метод get, чтобы изменить его атрибуты:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/form', name: 'article_form')] public function form(): Response { $form = $this->createFormBuilder() ->add('title', TextType::class) ->add('save', SubmitType::class) ->getForm(); $title = $form->get('title'); $title->setAttribute('class', 'main-input'); return new Response('form created'); } } ?>

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

"form created"

Пример

Давайте получим поле через метод get и изменим его опцию label:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/edit', name: 'article_edit')] public function edit(): Response { $builder = $this->createFormBuilder() ->add('title', TextType::class) ->add('content', TextareaType::class); $title = $builder->get('title'); $title->setAttribute('placeholder', 'Enter title'); $content = $builder->get('content'); $content->setAttribute('rows', 10); $form = $builder->getForm(); return new Response('form ready'); } } ?>

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

"form ready"

Пример

Давайте попробуем получить несуществующее поле 'price' и посмотрим, какое исключение выбросит метод:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/bad', name: 'article_bad')] public function bad(): Response { $builder = $this->createFormBuilder() ->add('title', TextType::class); try { $builder->get('price'); } catch (\InvalidArgumentException $e) { return new Response($e->getMessage()); } return new Response('ok'); } } ?>

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

"Field "price" does not exist."

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

  • класс FormBuilder,
    который строит формы в Symfony
  • метод add,
    который добавляет элемент в форму
  • метод has,
    который проверяет наличие элемента в форме
  • метод remove,
    который удаляет элемент из формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить