在twig块中访问symfony表单集合原型属性/属性

时间:2018-01-26 21:18:26

标签: symfony twig formcollection

我正在尝试设置表单的自定义symfony表单集合原型组件。我正在引用适当的文档 https://symfony.com/doc/3.3/form/form_customization.html#how-to-customize-a-collection-prototype

使用以下

设置表单集合
        <table class="table table-bordered" data-prototype="{{ form_row(form.quoteItemDeliverables.vars.prototype)|e('html_attr') }}">
        <caption>Deliverables</caption>
        <tr>
            <th>Quantity</th>
            <th>Date Required</th>
        </tr>
        {% for itemDeliverable in form.quoteItemDeliverables %}
            <tr>
                <td>{{ form_widget(itemDeliverable.quantity) }}</td>
                <td>{{ form_widget(itemDeliverable.dateRequired) }}</td>
            </tr>
        {% endfor %}
    </table>

使用以下

设置引用原型的树枝块
{% form_theme form _self %}
{% block _uniflytebundle_quoteitem_quoteItemDeliverables_entry_row %}
<tr>
    {#<td>{{ form_widget(form.quoteItemDeliverables.vars.prototype.quantity) }}</td>#}
</tr>

{{ dump(form.children["quoteItemDeliverables"]) }}
{% endblock %}

dump();正在返回以下错误

Key "quoteItemDeliverables" for array with keys "quantity, dateRequired" does not exist.

我做错了什么?

如果我转储(表格);我得到显示子项的表单对象,“quoteItemDeliverables”和“prototype”元素

dump screenshot

有人可以指出我如何访问各种表单属性的正确方向吗?尝试在原型的集合表单中执行所做的操作。以下是工作形式的集合元素。

            <td>{{ form_widget(itemDeliverable.quantity) }}</td>
            <td>{{ form_widget(itemDeliverable.dateRequired) }}</td>

我想对原型树枝块使用相同的东西,但使用类似

的东西
form_widget(itemDeliverable.prototype.dateRequired) 

不起作用。我怎么能这样做?

提前感谢您投入的时间和精力。

1 个答案:

答案 0 :(得分:0)

在树枝块内,form不是指“全局”表单,而是指与您的集合条目对应的子表单。这就是为什么dump调用产生的错误表明该数组有quantitydateRequired个键,但没有quoteItemDeliverables

因此你应该拥有的东西更像是:

{% block _uniflytebundle_quoteitem_quoteItemDeliverables_entry_row %}
    <tr>
        <td>{{ form_widget(form.quantity) }}</td>
        <td>{{ form_widget(form.dateRequired}}</td>
    </tr>
{% endblock %}