集合类型从sf2.8迁移到sf3

时间:2016-06-20 08:39:24

标签: symfony-forms symfony

让我们考虑一下这个例子:我有一个表单类型,我在“集合时尚”中嵌入了另一种类型,如下所示

->add('foo', CollectionType::class, [
    'entry_type'     => new FooType(),
    'error_bubbling' => false,
    'allow_add'      => true,
    'allow_delete'   => true,
    'required'       => false,
    'label'          => ' ',
    'entry_options'  => [
        'bar' => $options['bar'],
    ],
    'by_reference' => false,
])

并且一切正常(我可以轻松添加和删除元素)。

由于我正在将框架从2.8升级到3.0,我已阅读更新日志并注意到

  

已删除CollectionType的选项类型以支持   entry_type选项。 entry_type选项的值必须是   完全限定的班级名称(FQCN)。

所以我把表格改为

->add('foo', CollectionType::class, [
    'entry_type'     => FooType::class,
    'error_bubbling' => false,
    'allow_add'      => true,
    'allow_delete'   => true,
    'required'       => false,
    'label'          => ' ',
    'entry_options'  => [
        'bar' => $options['bar'],
    ],
    'by_reference' => false,
])

但是当我向集合添加元素时,似乎ModelData被折叠到同一个元素(集合的最后一个元素)中。

所以,假设我发布了带有[1,2,3]的实体,ViewData是正确的,而ModelData有一个带有三个元素的数组集合:三个foo(s)的id为3,所以同样的foo。

有谁知道这里发生了什么?

修改

这是FooType有意义的代码

$resolver->setDefaults([
    'data_class' => 'Vendor\Bundle\Entity\Foo',
    'empty_data' => new Foo(),
]);

1 个答案:

答案 0 :(得分:0)

这似乎是一个symfony错误(未经证实; read more)或在嵌入表单的entry_typenewempty_data中误导了FQCN的组合。< / p>

如果SF核心团队在问题中回复我,我会及时更新我的​​答案。