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

Метод createView класса Form

Метод createView класса Form создаёт объект класса FormView, который представляет собой готовую к выводу структуру формы для Twig-шаблона. Метод не принимает обязательных параметров. Обычно он вызывается автоматически через метод render контроллера или вручную в методе renderForm. Внутри FormView хранятся дочерние элементы формы, значения полей, ошибки валидации и метки. Именно этот объект передаётся в Twig под ключом form и используется для отрисовки через функции form_start, form_widget, form_row и другие.

Синтаксис

$form->createView(): FormView

Пример

Давайте создадим простую форму и получим её представление через createView:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentFormExtensionCoreTypeSubmitType; use SymfonyComponentFormExtensionCoreTypeFormType; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class FormController extends AbstractController { #[Route('/form', name: 'form_index')] public function index(): Response { $form = $this->createFormBuilder() ->add('name', TextType::class) ->add('send', SubmitType::class, ['label' => 'Save']) ->getForm(); $view = $form->createView(); return $this->render('form/index.html.twig', [ 'form' => $view, ]); } } ?>

В Twig-шаблоне объект FormView отрисовывается через функции формы:

{{ form_start(form) }} {{ form_row(form.name) }} {{ form_row(form.send) }} {{ form_end(form) }}

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

<form name="form" method="post"> <div> <label for="form_name">Name</label> <input type="text" id="form_name" name="form[name]"> </div> <div> <button type="submit" id="form_send" name="form[send]">Save</button> </div> </form>

Пример

Давайте получим дочерние элементы из FormView и выведем их имена в контроллере:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentFormExtensionCoreTypeTextType; use SymfonyComponentFormExtensionCoreTypeSubmitType; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class FormController extends AbstractController { #[Route('/form/children', name: 'form_children')] public function children(): Response { $form = $this->createFormBuilder() ->add('name', TextType::class) ->add('send', SubmitType::class) ->getForm(); $view = $form->createView(); $res = []; foreach ($view->children as $child) { $res[] = $child->vars['name']; } return new Response(implode(', ', $res)); } } ?>

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

"name, send"

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

  • класс Form,
    который представляет собой форму целиком
  • метод getData,
    который возвращает данные формы
  • метод isValid,
    который проверяет валидность формы
  • метод handleRequest,
    который обрабатывает запрос формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить