2012-03-08 5 views
4

У меня есть класс Form, который содержит много полей. Я хотел бы сделать несколько из них и передать левые как скрытые. Как это возможно ?Как визуализировать form_rest() как скрытые поля в Symfony2/Twig?

Я хотел бы сделать что-то вроде {{ form_rest(form, {'display': 'hidden'}) }} или <div display="hidden">{{ form_rest(form) }}</div>.

Пример:

<form action="{{ path('fiche_intervention', {'rreid': rre.rreid}) }}" method="post" {{ form_enctype(form) }}> 
    {{ form_errors(form) }} 
    <div class="bloc-input">{{ form_label(form.rredatecommencement, "Date de retrait :") }} 
    {{ form_widget(form.rredatecommencement) }} 
    </div> 

{# Some other fields... #} 
    {# ... #} 
{# /Some other fields... #}  

    <div display="hidden">{{ form_rest(form) }}</div> 
    <input type="submit" /> 
</form> 

ответ

3

Вы должны сделать это в функции buildForm, внутри «FormController». Просто добавить «скрытый», когда вы добавляете поле, достаточно.

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder->add('name'); 
    $builder->add('email', 'email'); 
    $builder->add('subject'); 
    $builder->add('anyone', 'hidden'); 
} 
+0

и PéCé: Вы оба правы, и я понимаю, что мне нужно будет создать два класса форм, каждый для одной формы. – Creasixtine

2

form_rest() делает все не-визуализации полей из формы. Он просто отображает их так, как они есть, поэтому, если вы хотите отображать оставшиеся поля как «скрытые», вам просто нужно определить их как «скрытые» в вашей форме!

+0

Спасибо за ответ! – Creasixtine

2

Также вы можете установить все ненужные поля вынесенным в шаблоне веточку:

<form action="{{ path('fiche_intervention', {'rreid': rre.rreid}) }}" method="post" {{ form_enctype(form) }}> 
{{ form_errors(form) }} 
<div class="bloc-input">{{ form_label(form.rredatecommencement, "Date de retrait :") }} 
{{ form_widget(form.rredatecommencement) }} 
</div> 
    {% do form.unneededfield1.setRendered %}     
    {% do form.unneededfield2.setRendered %}     
    {% do form.unneededfield3.setRendered %}     
<div display="hidden">{{ form_rest(form) }}</div> 
<input type="submit" /> 
</form>