【发布时间】:2015-06-19 05:15:14
【问题描述】:
Symfony 2.6.9
我有具有avatar 属性的UserProfile 实体,该属性具有oneToOne 与UserAvatar 实体的单向关系和级联持久性。
BlogBundle\Entity\UserProfile:
type: entity
table: user_profiles
id:
id:
type: integer
generator:
strategy: AUTO
fields:
#...
oneToOne:
#...
avatar:
targetEntity: UserAvatar
cascade: ['persist', 'remove']
我创建了带有嵌入式头像表单字段的UserProfile 表单类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
#...
->add('avatar', new UserAvatarType, [
'required' => false,
])
->add('submit', 'submit', [
'attr' => [
'class' => 'right'
]
])
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'BlogBundle\Entity\UserProfile',
'cascade_validation' => true,
));
}
public function getName()
{
return 'userProfile';
}
}
还有UserAvatarType:
class UserAvatarType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('file', 'file', [
'label' => false
])
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'BlogBundle\Entity\UserAvatar',
));
}
public function getName()
{
return 'userAvatar';
}
}
UserProfile 和 UserAvatar 实体在我提交表单时已经存在,它们是在用户注册持久性事件时自动创建的。我只是编辑个人资料实体。
当我提交表单时,UserProfile 内的所有字段都保存得很好,但没有嵌入avatar 字段。未调用 UserProfile 内的方法 setAvatar。 UserAvatar 的验证顺利通过。没有错误,UserAvatar 实体只是没有持久化。
有人可以帮忙吗?
【问题讨论】:
标签: symfony