【发布时间】:2017-06-16 01:31:06
【问题描述】:
我在这篇文章 http://symfony.com/doc/current/cmf/bundles/seo/seo_aware.html 之后将 SEO 数据添加到我的实体。
class Provider implements SeoAwareInterface
{
/**
* @var SeoMetadataInterface
*
* @ORM\OneToOne(targetEntity="Symfony\Cmf\Bundle\SeoBundle\Model\SeoMetadata", cascade={"persist","remove"})
* @ORM\JoinColumn(name="seo_metadata_id", referencedColumnName="id")
*/
protected $seoMetadata;
}
我使用 SonataAdmin 编辑 Provider 实体,并为 seoMetadata 属性使用特殊表单类型 - SeoMetadataType (http://symfony.com/doc/current/cmf/bundles/seo/seo_aware.html#form-type)
protected function configureFormFields(FormMapper $form)
{
$form
// some entity related fields
->with('form.provider.seo_group_title', [
'class' => 'col-md-4',
])
->add('seoMetadata', SeoMetadataType::class, [], [
'generic_metadata' => false,
])
->end()
;
}
接下来是问题 - 每次我编辑 Provider 实体时,我都会获得 SeoMetadata 的新记录。
我已经调试了更新过程,在persist 和flush 操作之前我在$seoMetadata 属性中有SeoMetadata 的代理,并且存在id,但是在persist 和flush 操作之后我看到了代理新的id 和表中的新记录。
有人知道怎么回事吗?
【问题讨论】:
标签: symfony doctrine sonata symfony-cmf