Я добавил дополнительный шаг проверки к процедуре проверки 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);
}
}
Первый вопрос: Правильный ли это подход для конструктора форм для моего конкретного сценария, и во-вторых: если да, как мне прочитать из этого в шаблоне ветки?
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 %}
Есть идеи, как это сделать? Спасибо за любую подсказку заранее!