我有一个简单的问题,关于Symfony2的表单类型“集合”与doctrine的列“数组”的组合。**
我的实体:
/**
* @Column(type="array", nullable=true)
* @var array
*/
private $specifications;
我的“主要”表格:
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('specifications', 'collection', array (
'type' => new ProductSpecificationType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
)
);
}
我的“ProductSpecificationsType”表单:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('group', 'text')
->add('info', 'text')
;
}
我的输出带按钮(树枝):
{{ form_row(form.specifications) }}
<a data-prototype="{{ form_widget(form.specifications.vars.prototype) | e }}" href="#" onclick="return false;">Add</a>
真正的出局就是这个(html):
<a data-prototype="" href="#" onclick="return false;">Add</a>
如果我只使用最终没有“e”之类的“e”的form_widget,那就相同了。
保存后,实体将使用数组column = null保存。
因此,如果我将每个FireBug的这些行手动添加到html表单
<input type="text" name="product[specifications][0][group]" value="Exam">
<input type="text" name="product[specifications][0][info]" value="ple">
<input type="text" name="product[specifications][1][group]" value="Extra">
<input type="text" name="product[specifications][1][info]" value="Example">
然后按“保存”,实体将以这种格式保存:
a:2:{i:0;a:2:{s:5:"group";s:4:"Exam";s:4:"info";s:3:"ple";}i:1;a:2:{s:5:"group";s:5:"Extra";s:4:"info";s:7:"Example";}}
我的问题:
为什么我的原型是空的?
为什么form_widget为空? (如果我手动填写上面的数据,也是空的!)
提前谢谢!
答案 0 :(得分:1)
您是否尝试过添加'prototype'=&gt;对于“Main”表单构建器是真的吗? 类似的东西:
$builder->add('specifications', 'collection', array (
'type' => new ProductSpecificationType(),
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'prototype' => true
)
);