我没有对实体使用任何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
集合字段中为空(所有其他输入都正常)。
$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 %}
答案 0 :(得分:0)
您需要创建:
查看本教程:)
答案 1 :(得分:0)
当我为所需的集合定义FormType
时,我的问题得以解决:
class MyType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('first_node', 'text');
$builder->add('second_node', 'text');
}
public function getDefaultOptions(array $options)
{
return array();
}
public function getName()
{
return 'mytype';
}
}
然后我在构建器中使用它:
$builder = $this->myHelper
->createBuilder('form', null)
->add('my_group', new MyType(), array(
'label' => 'mylabel'
));
return $builder->getForm();
此数据绑定后形成正确。