当我创建产品时,我使用sonata_type_collection作为我的关系...它就像一个魅力,并且值正确地插入到daabase中。
然而,如果我然后转到我的产品上显示或编辑我没有收到任何错误,但值没有显示,就像我从未添加它们。
例如:
在我的产品中,我可以添加几个类别:
->add('category', 'sonata_type_collection',
array(
'required' => false,
'label' => 'Category',
),
array(
'edit' => 'inline',
'inline' => 'table',
//'sortable' => 'id',
)
)
Ant我的ProductCategoryAdmin很简单:
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('categoryId')
;
}
所以我在我的产品中添加了两个类别并创建它。它们被插入数据库中。
现在,如果我点击编辑产品,它会显示0个类别......为什么会这样?除了这个类别集合外,所有其他集合都正常工作。
答案 0 :(得分:1)
数据库中的ProductCategory是否同时具有productId和categoryId? 如果您的产品类别未在展示和编辑产品中显示,则似乎productId未插入您的ProductCategory。
我通常会添加' by_reference' =>在我的sonata_type_collection上为false,强制调用所有setter。
by_reference的官方文档:http://symfony.com/doc/current/reference/forms/types/collection.html#by-reference
有了它,你的代码就是:
->add('category', 'sonata_type_collection',
array(
'required' => false,
'by_reference' => false,
'label' => 'Category',
),
array(
'edit' => 'inline',
'inline' => 'table',
//'sortable' => 'id',
)
)
另外,我会命名字段类别而不是类别:)