1

こんにちは、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';
    }

}
4

1 に答える 1

2

追加cascade_validationすると、埋め込みフォームで検証が機能します。

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'validation_groups' => array('Registration'),
            'cascade_validation' => true,
        ));


    }
于 2012-08-24T13:39:33.660 に答える