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

Функция form_end

Функция form_end используется в шаблонах Twig для завершения формы. Она выводит закрывающий тег </form>, а также автоматически добавляет все поля, которые не были выведены ранее (например, скрытые поля CSRF-токена). Функция принимает переменную формы, созданную с помощью form_start или переданную из контроллера. Вторым аргументом можно передать массив опций, например render_rest, который управляет выводом оставшихся полей.

Синтаксис

{{ form_end(form, options) }}

Пример

Давайте создадим простую форму в контроллере и выведем её в шаблоне с помощью form_start и form_end. Сначала создадим форму:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('title', TextType::class) ->add('save', SubmitType::class, ['label' => 'Save']); } } ?>

Теперь выведем форму в шаблоне:

{{ form_start(form) }} {{ form_row(form.title) }} {{ form_row(form.save) }} {{ form_end(form) }}

В результате выполнения будет сгенерирован следующий HTML-код:

<form name="article" method="post"> <div> <label for="article_title">Title</label> <input type="text" id="article_title" name="article[title]" /> </div> <div> <button type="submit" id="article_save" name="article[save]">Save</button> </div> <input type="hidden" id="article__token" name="article[_token]" value="..." /> </form>

Пример

Давайте рассмотрим, как работает опция render_rest. Если установить её в false, то form_end не будет выводить поля, которые не были отображены ранее (например, CSRF-токен). Это полезно, если вы хотите вывести все поля вручную:

{{ form_start(form) }} {{ form_row(form.title) }} {{ form_row(form.save) }} {{ form_widget(form._token) }} {{ form_end(form, {'render_rest': false}) }}

В этом случае HTML-код будет содержать только те поля, которые были выведены явно, а form_end добавит только закрывающий тег </form>:

<form name="article" method="post"> <div> <label for="article_title">Title</label> <input type="text" id="article_title" name="article[title]" /> </div> <div> <button type="submit" id="article_save" name="article[save]">Save</button> </div> <input type="hidden" id="article__token" name="article[_token]" value="..." /> </form>

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

  • функция form_start,
    которая открывает форму
  • функция form_widget,
    которая выводит одно поле формы
  • функция form_row,
    которая выводит строку формы (метка, поле, ошибки)
  • функция form,
    которая выводит всю форму целиком
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить