ero*_*eev 2 symfony symfony-sonata sonata-admin sonata
简而言之:
当我在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'
))
))
;
}
Run Code Online (Sandbox Code Playgroud)
问题是在创建表单中,当我添加新标签时,我必须指定帖子和标题,但邮件仍然不存在,所以我无法添加标签.当我正在编辑帖子时,我可以添加新标签,但是对于其中的每一个,我都必须明确设置帖子,并且我能够为完全不同的帖子添加标签.
你能告诉我如何解决这个问题吗?
您可能希望将by_reference选项设置为false.
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('tags', \Sonata\CoreBundle\Form\Type\CollectionType::class,
array('by_reference' => false),
array('edit' => 'inline',
'inline' => 'table'
)
);
}
Run Code Online (Sandbox Code Playgroud)
[编辑]所以看起来问题来自Post实体,它必须从addTag()方法调用标签的setPost()方法.
public function addTag($tag)
{
$tag->setPost($this);
$this->tags->add($tag);
return $this;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9967 次 |
| 最近记录: |