エンティティには ORM を使用しません。このフォームは、電子メールの送信専用に作成されています。
私のコントローラーにはこれがあります:
$builder = $this->myHelper
->createBuilder('form', null)
->add('my_group', 'collection', array(
'type' => 'text',
'label' => 'mylabel'
));
$builder->get('my_group')->add('first_node', 'text');
$builder->get('my_group')->add('second_node', 'text');
return $builder->getForm();
フォームは正常にレンダリングされます - 追加の入力フィールドが期待どおりに表示されます。しかし、ポストデータ処理アクションでリクエストをフォームにバインドする場合、my_group
フィールドは空になります (このフィールドが'form'
配列にポストされているためでも):
// var_dump($request->get('form'));die;
array
'my_group' =>
array
'first_node' => string 'asdasd' (length=3)
'second_node' => string 'asdasda' (length=3)
リクエストをフォームにバインドすると、my_group
コレクション フィールドに null が表示されます (他のすべての入力は問題ありません)。
$form->bindRequest($request);
$formData = $form->getData();
var_dump($formData);die; // Outputs my_group => null
私は何を間違っていますか?
更新 1
Twig テンプレートの一部 ( Maxから要求):
{% for field in form.children if 'hidden' not in field.vars.types %}
...
{% elseif 'collection' in field.vars.types %}
<th>{{ form_label(field) }}</th>
<td>
{% for collection_field in field %}
{{ form_widget(collection_field) }}
{% endfor %}
</td>
{% else %}
...
{% endfor %}