如何将form_rest()渲染为Symfony2 / Twig中的隐藏字段?

时间:2012-03-08 09:06:11

标签: symfony twig symfony-forms hidden-field

我有一个包含许多字段的Form类。我想渲染其中的一些并将左边的那些隐藏起来。这怎么可能?

我想做{{ 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>

4 个答案:

答案 0 :(得分:3)

您必须在“FormController”中的buildForm函数中执行此操作。只需在添加字段时添加“隐藏”即可。

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

答案 1 :(得分:3)

此外,您可以将所有不需要的字段设置为在树枝模板中呈现:

<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>

答案 2 :(得分:2)

form_rest()从表单中呈现所有未呈现的字段。它只是按原样呈现它们,所以如果你想将剩余的字段渲染为“隐藏”,你只需要在表单中将它们定义为“隐藏”!

答案 3 :(得分:1)

{{ form_end(form, {'render_rest': false}) }}

它来自official documentation (v3.0)所以我认为这是最好的做法。