嗨,我想将FOSUserBundle中的一部分注册表嵌入另一个注册表中。当我尝试添加现有电子邮件时,由于未使用唯一验证器,引发了"完整性约束冲突"异常。我该怎么解决这个问题。当单独使用登记表时,验证器工作正常。
主要形式:
class SoldierType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
...
->add('user', new NameFormType('Application'Sonata'UserBundle'Entity'User'))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => array('registration')
));
}
public function getName()
{
return 'wnc_soldierbundle_soldiertype';
}
}
名称表单
namespace Application'Sonata'UserBundle'Form'Type;
use Symfony'Component'Form'AbstractType;
use Symfony'Component'Form'FormBuilderInterface;
use Symfony'Component'OptionsResolver'OptionsResolverInterface;
use FOS'UserBundle'Form'Type'RegistrationFormType as BaseForm;
class NameFormType extends BaseForm
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstname')
->add('lastname')
->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'));
}
public function getName()
{
return 'fos_user_name';
}
}
添加cascade_validation
将使验证在嵌入式表单中工作。
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => array('Registration'),
'cascade_validation' => true,
));
}