简而言之:
当我在 OneToMany 关系中使用“sonata_type_collection”时,我必须指定关系的另一端,在“创建操作”中仍然不存在并且可以在“更新操作”中设置,但也可以完全指定不同的父母。
更详细的解释:
我正在使用 Sonata Admin Bundle 进行 CRUD 操作,假设我只有 Post(id, title, content) 和 Tag(id, post_id, title) 实体。我希望能够在编辑 Post 实体时添加和删除标签实体,因此我使用“sonata_type_collection”字段。
这是 PostAdmin 类中的 configureFormFields 方法:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('tags', 'sonata_type_collection', array(), array(
'edit' => 'inline',
'inline' => 'table'
))
))
;
}
问题是在创建表单中,当我添加新标签时,我必须同时指定帖子和标题,但帖子仍然不存在,所以我无法添加标签。在编辑帖子时,我可以添加新标签,但是对于每个标签,我都必须明确设置一个帖子,例如,我可以为完全不同的帖子添加一个标签。
你能告诉我如何解决这个问题吗?