4

我有一个带有集合类型字段的表单,如下所示:

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

表单的实体可以有多个集合项,也可以没有。

当实体有集合的项目时,它可以正常工作,但是当它没有时,twig 中的“for”不会发生,并且在 form_rest 中会生成一个“Beneficios”div。

有什么办法可以防止吗?提前致谢。

4

2 回答 2

7

这似乎是表单渲染中的一个错误。通过在渲染集合元素之后添加以下代码,我设法禁用了 form_rest 函数中的额外表单渲染:

{% do form.uploads.setRendered() %}

“上传”是我的收藏字段类型。不过,这对我来说似乎不是最佳做法。

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

 <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() %}
于 2012-09-30T20:56:59.073 回答
0

form_rest 生成所有未渲染的表单。Symnfony2 中的每个输入都是表单,集合类型也是如此。

你从来没有打印出集合,所以 Symfony 为你制作。如果您想隐藏它,并且仍然使用 form_rest,只需将其打印到:

<div style="display: none" />
于 2012-06-05T12:25:13.847 回答