symfony2验证组 - 只有一个组可以工作

时间:2012-04-23 16:19:19

标签: validation symfony

这是我的表格:

$forumuser = new Forumuser();
        $passwordform = $this->createFormBuilder($forumuser, array('validation_groups' => array('userSettings')))
            ->add('passwordold', 'password', array('attr' => array('autocomplete' => 'off'), 'required' => false, 'error_bubbling' => true, 'property_path' => false))
            ->add('password', 'repeated', array(   'type' => 'password',
                                                        'invalid_message' => 'user.myprofile.password.repeat',
                                                        'options' => array('attr' => array('autocomplete' => 'off'), 'required' => false, 'error_bubbling' => true)                                                    
                                                    )
            )
            ->getForm();

这是ForumUser.class中带有validationannotations的属性:

/**
     * @var string $password
     *
     * @ORM\Column(name="password", type="string", length=200, nullable=false)
     * @Assert\NotBlank(message="forumuser.password.notblank", groups={"userRegister", "userSettings"})
     * @Assert\MinLength(limit="4", message="forumuser.password.minlength", groups={"userRegister", "userSettings"})
     */
    private $password;

我想使用 userSettings 组,但在绑定后,$ passwordform-> getErrors()为空。当我使用 userRegister 组时,将验证所有其他属性。这意味着,我所做的一切,都没有验证密码属性。

有人知道我做错了什么吗? 非常感谢你。

1 个答案:

答案 0 :(得分:0)

You have to define on form type , diiferent group name  like this 

public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => '',
            'cascade_validation' => true,

            'validation_groups' => array('user_settings'),
        );
    }
和其他人一样。