Поля групповой формы в Symfony2

Я хочу сгруппировать поля в symfony2. Например, оберните их в div и разместите заголовки между ними:

<form> <div class="step-1"> <h3>Step 1</h3> Field 1 Field 2 </div> <div class="step-2"> <h3>Step 2</h3> Field 3 Field 4 </div> </form> 

Проблема заключается в том, что у формы появилось очень много полей, поэтому я не могу сделать их один за другим в шаблоне. Есть ли какой-либо вариант при добавлении полей? Подобно:

 $form = $this->createFormBuilder() ->addGroup('step-1') 

Или как я могу справиться с этим?

Twig может помочь вам отобразить несколько полей с минимальным кодом:

 <form> <div class="step-1"> <h3>Step 1</h3> {% for field in [ 'field1', 'field2'] if (attribute(form, field) is defined) %} {{ form_row(attribute(form, field)) }} {% endfor %} </div> <div class="step-2"> <h3>Step 2</h3> {% for field in [ 'field3', 'field4', 'field5', 'field6' ] if (attribute(form, field) is defined) %} {{ form_row(attribute(form, field)) }} {% endfor %} </div> {# Display the other fields #} {{ form_rest(form) }} </form> 

Я узнал, согласно этому сообщению (спасибо «n.1» за ссылку), можно сгруппировать в контроллер:

 $form = $this->createFormBuilder() ->add( $this->createFormBuilder()->create('step1', 'form', array('virtual' => true)) ->add('field1', 'text') ->add('field2', 'text') ) 

Что дает следующий шаблон:

 <div class="input-wrapper"> <label class="required">Step1</label> <div id="form_step1"> <div class="input-wrapper"> <label class="required" for="form_step1_field1">Field1</label> <input id="form_step1_field1" type="text" required="required" name="form[step1][field1]"> <input id="form_step1_field2" type="text" required="required" name="form[step1][field1]"> </div> </div> </div> 

Что я могу тему, как я хочу. Но и «бщуссек» писал:

Структура в вашем классе формы не обязательно должна быть связана со структурой в вашем макете. Вы можете структурировать поля в HTML в зависимости от того, что вам нравится.

Поэтому, возможно, лучшая практика заключается не в том, чтобы использовать контроллер для структурирования, и я должен предпочесть практику с «n.1»,

Структура в вашем классе формы не обязательно должна быть связана со структурой в вашем макете. Вы можете структурировать поля в HTML-формате в зависимости от того, что вам нравится. В вашем случае вы бы поставили свои заголовки так же, как в своем Q, например:

 <div class="step-1"> <h3>Step 1</h3> {{ form_widget(form.field1) }} {{ form_widget(form.field2) }} </div> 

Если вы все еще заинтересованы в групповых формах (я не проверял это):

 $builder->add( $builder->create('step1', 'form', array('virtual' => true)) ->add('field1', 'text') ->add('field2', 'text') ); 

Источник .