首页 > 解决方案 > 我可以使用 Twig 在循环中重复 Symfony 表单,还是必须手动构建它?

问题描述

我对 Symfony 和 Twig 完全陌生;就在昨天,我被扔进了一个使用它们的遗留项目。

我有一个由模板循环生成的列表,Orders每个订单都有一个priority从 1 到 5 的列表。

Select我想向每个下拉列表添加一个下拉列表,Order row该下拉列表提交一个更新并刷新页面Order的表单。priority

我的问题是,我可以将 Symfony 的 buildForm 与这个架构结合使用吗?现在我手动构建了以下表单。甚至有可能用 Twig 构建一系列像这样的相同形式吗?:

{% for order in orders %}
<form method="post" action="{{ path('change_priority') }}" style="margin: 0; padding: 0;">
    <div class="form-group">
        <select name="priority" style="width: 35px; height: 20px;" onchange="this.form.submit()">
            <option value="1" {% if order.currentBody.priority == 1 %} selected {% endif %}>1&nbsp;&nbsp;- Low</option>
            <option value="2" {% if order.currentBody.priority == 2 %} selected {% endif %}>2&nbsp;&nbsp;- Normal</option>
            <option value="3" {% if order.currentBody.priority == 3 %} selected {% endif %}>3&nbsp;&nbsp;- High</option>
            <option value="4" {% if order.currentBody.priority == 4 %} selected {% endif %}>4&nbsp;&nbsp;- Critical</option>
            <option value="5" {% if order.currentBody.priority == 5 %} selected {% endif %}>5&nbsp;&nbsp;- No Priority</option>
        </select>
        <input name="order_id" value="{{order.serial}}" type="hidden" />
    </div>
</form>
{% endfor %}

这是我所追求的图像。更改任何Order行项目Order的优先级会更改其优先级,然后刷新页面。

在此处输入图像描述

标签: symfonysymfony-2.1formbuilder

解决方案


您必须将它们添加到表单类型中。你不能在你的树枝模板中这样做。如果您使用 {{ form_row(form.select) }} 之类的内容渲染字段,它将被标记为已显示并且不会再次渲染,即使您再次调用 {{ form_row(form.select) }} 也是如此。


推荐阅读