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

Функция form_start

Функция form_start используется в Twig-шаблонах для открытия HTML-тега формы. Первым параметром передаётся объект формы, вторым - массив дополнительных атрибутов. Функция автоматически подставляет значения action и method из конфигурации формы, а также добавляет скрытые поля для токена CSRF и метода HTTP.

Если в форме используется метод POST, функция выводит его как есть. Для методов PUT, PATCH и DELETE функция добавляет скрытое поле _method, а сам тег формы получает метод POST.

Синтаксис

{{ form_start(form, {'attr': {'class': 'my-form'}}) }}

Пример

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

<?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('name', TextType::class) ->add('save', SubmitType::class); } } ?>

Теперь создадим контроллер, который создаёт форму и передаёт её в шаблон:

<?php namespace App\Controller; use App\Form\ArticleType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; 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, ]); } } ?>

Отрендерим форму в Twig-шаблоне:

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

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

<form name="article" method="post" action="/article"> <div> <label for="article_name">Name</label> <input type="text" id="article_name" name="article[name]" /> </div> <div> <button type="submit" id="article_save" name="article[save]">Save</button> </div> <input type="hidden" id="article__token" name="article[_token]" value="abcde" /> </form>

Пример

Давайте добавим CSS-класс и атрибут novalidate к тегу формы с помощью второго параметра функции form_start:

{{ form_start(form, { 'attr': {'class': 'my-form', 'novalidate': 'novalidate'} }) }} {{ form_row(form.name) }} {{ form_row(form.save) }} {{ form_end(form) }}

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

<form name="article" method="post" action="/article" class="my-form" novalidate="novalidate"> <div> <label for="article_name">Name</label> <input type="text" id="article_name" name="article[name]" /> </div> <div> <button type="submit" id="article_save" name="article[save]">Save</button> </div> <input type="hidden" id="article__token" name="article[_token]" value="abcde" /> </form>

Пример

Давайте изменим HTTP-метод формы на PUT с помощью опции method при создании формы:

<?php namespace App\Controller; use App\Form\ArticleType; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_form')] public function form(): Response { $form = $this->createForm(ArticleType::class, null, [ 'method' => 'PUT', ]); return $this->render('article/form.html.twig', [ 'form' => $form, ]); } } ?>

Теперь функция form_start автоматически подставит метод POST в тег формы и добавит скрытое поле _method со значением PUT:

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

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

<form name="article" method="post" action="/article"> <div> <label for="article_name">Name</label> <input type="text" id="article_name" name="article[name]" /> </div> <div> <button type="submit" id="article_save" name="article[save]">Save</button> </div> <input type="hidden" name="_method" value="PUT" /> <input type="hidden" id="article__token" name="article[_token]" value="abcde" /> </form>

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

  • функция form_end,
    которая закрывает тег формы
  • функция form_row,
    которая выводит строку поля формы
  • функция form_widget,
    которая выводит виджет поля формы
  • класс Form,
    который представляет объект формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить