如何使用Symfony2实体的字段呈现复选框组

时间:2015-09-23 05:17:39

标签: symfony checkbox entity symfony-2.7

我有一个与 items_budget 相关的材料表。 items_budget 的表单需要将所有已注册的材料列为checkbox组,并在每个checkbox旁边列出两个input字段,数量和价格。下面是我为渲染这篇文章而编写的代码块:

<strong>Materiais</strong>
{% for material in materials %}
    <div class="checkbox">
        <label>
            <input type="checkbox" class="itemsbudget_material" name="cdg_itemsbudget_type[material]" value="{{ material.id }}"> {{ material.name }} - 
        </label>
        <input type="hidden" class="itemsbudget_price_hidden" value="{{ material.price }}"/>
        <input type="text" class="itemsbudget_quantity" name="cdg_itemsbudget_type[quantity]" placeholder="Qtd" size="3"/>x - R$
        <input type="text" class="itemsbudget_price" name="cdg_itemsbudget_type[price]" value="0" size="3" readonly/>
    </div>
{% endfor %}

我可以在图像中看到我面临的问题。查看左上角的图片,您会看到我标记了&#34;材料C&#34;,填写了数量,并在提交表单后,如第二张图片所示,一切都很好。

但是如果我对另一个材料做同样的事情,就像我在桌子的最后一张图片中看到的那样,数量字段是NULL。

这里发生的事情是,只有材料表单中的第一个注册表是,&#34; s,&#34; see&#34;。当我说&#34;首先注册&#34;我的意思是材料形式中最低的 id ,字面意思是FIRST。如果我删除了&#34;材料C&#34;,那么&#34;材料D&#34;将是第一个,数量字段只能用于它。

enter image description here

我试图在每个name属性的末尾添加一对括号,但是通过这样做,页面会刷新并且没有任何内容,没有任何反应。

我尝试了许多不同的方式来渲染它。此外,我尝试将我的material字段创建为集合,但我认为这不是解决方案,因为我必须获取 id 数量和在字段中输入价格。我需要能够使用集合表单呈现与此完全相同的内容。

我需要指导。如果您需要更多代码,我将很乐意更新我的问题。谢谢。

1 个答案:

答案 0 :(得分:1)

数量字段的值为空,因为字段的名称是cdg_itemsbudget_type [quantity],该值覆盖了最后一个数量字段为空,您的字段名称必须是具有唯一索引的数组,如下所示:

<input type="text" class="itemsbudget_quantity" name="cdg_itemsbudget_type[quantity][{{ material.id }}]" placeholder="Qtd" size="3"/>x - R$

然后你就有了每种材料的数量。