Дальше отображаете это всё в twig.
Например можете в twig отправить готовую html код
CollectionType
формы в html атрибут data-prototype
<div data-prototype="
{% apply escape %}
{{ include('app/template/prototype/collection_form.html.twig', { 'form': form.attributes.vars.prototype }) }}
{% endapply %}"></div>
в файле
collection_form.html.twig
что-то такое:
{{ form_widget(form.name) }}
{{ form_widget(form.product) }}
{{ form_widget(form.attribute) }}
Далее через javascript вставляете html форму из
data-prototype
, когда пользователь нажмёт кнопку добавить новый атрибут. При вставке вам нужно будет вручную выставлять индексы новым полям, по дефолту symfony засунет туда что-то вида
form[__name__]
Ну при сохранение, всё будет в виде массива в
attributes[]
Если у вас уже готовые атрибуты в
attributes[]
, то просто через
foreach
создаёте форму.
{% for row in form.attributes %}
{{ form_widget(row.name) }}
{{ form_widget(row.attribute) }}
{% endfor %}