コレクション型を別のコレクション型に含めたい。次のようになります。
コレクションを 1 つだけ使用しても問題ありませんが、外側のフォームのプロトタイプを編集する必要があるため、行ごとに内側のフォームのプロトタイプをレンダリングします。
どうすればそれを行うことができますか?また、どのように保存するのが最善でしょうか
編集:今、ネストされたフォームのプロトタイプをレンダリングしようとしています:
<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
))
プロモーション特性タイプ
$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'))
;
最初のレベルのプロトタイプは正常に動作します。