Symfony 表单生成器:如何 iterate/render 树枝中的动态文本字段数量? (Sylius - 额外的结帐步骤)

Symfony form builder: How to iterate/render dynamic amount of text fields in twig? (Sylius - exta checkout step)

我在 Sylius 结账程序中添加了一个额外的结账步骤,并且我正在尝试为每个订购商品实例添加 1 个文本字段。因此,将 3x itemA 和 1x itemB 放入购物车应该会生成 4 个文本字段。

到目前为止,我在表单生成器中有这段代码(基于此处的代码:https://sf.khepin.com/2011/08/basic-usage-of-the-symfony2-collectiontype-form-field/

        $builder->add('myCollection', CollectionType::class, $formOptions);

        $totalCounter = 0;
        /** @var OrderItem $item */
        foreach($order->getItems() as $item) {
            for($itemCounter = 0 ; $itemCounter < $item->getQuantity(); $itemCounter++ ) {
                $totalCounter++;
                $builder->get('myCollection')->add('item_' . $totalCounter, TextType::class, $formOptions);
            }
        }

第一个问题:对于我的特定场景,这是表单构建器的正确方法吗?第二:如果是,我如何在 twig 模板中读取它?

form.children.myCollection 确实存在但似乎不包含这些子项,因此我可以将它们与 form_row 函数一起使用。我所期望的是这样的:

{% set totalCounter = 0 %}
{% for item in order.items %}
    {% for itemCounter in 1..item.quantity %}
        {% set totalCounter = totalCounter + 1 %}
        {{  form_row(form.children.myCollection['item_' ~ totalCounter ]) }}
    {% endfor %}
{% endfor %}

知道怎么做吗?感谢您提前提示!

刚刚在 CollectionType 的文档开头看到了我的确切案例 https://symfony.com/doc/current/reference/forms/types/collection.html

表单生成器部分..

$builder->add('emails', CollectionType::class, [
    // each entry in the array will be an "email" field
    'entry_type' => EmailType::class,
    // these options are passed to each "email" type
    'entry_options' => [
        'attr' => ['class' => 'email-box'],
    ],
]);

..和树枝部分:

{{ form_label(form.emails) }}
{{ form_errors(form.emails) }}

<ul>
{% for emailField in form.emails %}
    <li>
        {{ form_errors(emailField) }}
        {{ form_widget(emailField) }}
    </li>
{% endfor %}