Я хочу включить тип коллекции внутри другого типа коллекции. Он должен выглядеть следующим образом:
Использование только одной коллекции прекрасно работает, но мне нужно отредактировать прототип внешней формы, поэтому она отображает прототип внутренней формы для каждой строки.
Любые идеи, как я мог это сделать? Также, что было бы лучшим способом сохранить
EDIT: Теперь я пытаюсь отобразить прототип вложенной формы:
<ul class="characteristics-container" data-prototype="{{ form_widget(form.characteristics.vars.prototype)|e }}" data-prototype-options="{{ form_widget(form.characteristics.options.vars.prototype|e ) }}">
{# iterate over each existing tag and render its only field: name #}
{% for characteristic in form.characteristics %}
<li>{{ form_row(characteristic.name) }}</li>
<div class="characteristics-options">
{% for opt in form.characteristics.options %}
{% endfor %}
</div>
{% endfor %}
</ul>
Он дает ошибку в form_widget(form.characteristics.options.vars.prototype|e
Method "options" for object "Symfony\Component\Form\FormView" does not exist in
Я пробовал характеристики [0], и он говорит, что ключ не существует
Вот мои классы форм:
PromotionType (базовая форма)
$builder
->add('characteristics','collection', array(
'label' => 'Caracteristicas',
'type' => new PromotionCharacteristicType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
))
PromotionCharacteristicType
$builder
->add('name',NULL, array('label' => 'Nome'))
->add('options', 'collection', array(
'type' => new PromotionCharacteristicOptionType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false,
))
;
PromotionCharacteristicOptionType
$builder
->add('name',NULL, array('label' => 'Nome'))
;
Прототип первого уровня отлично работает.