form_rest命令显示以前呈现的Collection字段

Hei*_*tor 4 symfony twig

我有一个带有集合类型字段的表单,呈现方式如下:

<div id="beneficiosTab" class="opcional">
    Beneficios
    <ul class="beneficios" data-prototype="{{ form_widget(formAtendimento.beneficios.get('prototype')) | e }}">
        {% for beneficio in formAtendimento.beneficios %}
            <li>{{ form_row(beneficio.coTipoBeneficio) }}</li>
            <li>{{ form_row(beneficio.vrValor) }}</li>
            <li>{{ form_row(beneficio.boConcedido) }}</li>
        {% endfor %}
        <li><a href="#" id="addBeneficio">Add Beneficio</a></li>
    </ul>
</div>
<div style="clear:both"></div>
{{ form_rest(formAtendimento) }}
Run Code Online (Sandbox Code Playgroud)

表单的实体可以包含多个集合项,也可以不包含任何项.

当实体具有集合的项目时,它工作正常,但是当它没有时,树枝中的"for"不会发生,并且在form_rest中生成"Beneficios"div.

我能以任何方式阻止这种情况吗 提前致谢.

Hid*_*dde 7

这似乎是表单呈现中的错误.我设法在form_rest函数中禁用额外的表单呈现,通过在呈现集合元素之后添加此代码:

{% do form.uploads.setRendered() %}
Run Code Online (Sandbox Code Playgroud)

"uploads"是我的集合字段类型.这对我来说似乎不是最好的做法.

所以整个渲染看起来像这样:

 <div id="uploads" data-prototype="{{ form_widget(form.uploads.vars.prototype)|e }}">
        {% for upload in form.uploads %}
            {{ form_widget(upload) }}
        {% endfor %}
  </div>
  {% do form.uploads.setRendered() %}
Run Code Online (Sandbox Code Playgroud)