Validation 如何覆盖FOSUserBundle中的密码验证

Validation 如何覆盖FOSUserBundle中的密码验证,validation,symfony,passwords,fosuserbundle,Validation,Symfony,Passwords,Fosuserbundle,我在Symfony2项目中使用FOSUserBundle。我找不到任何关于如何覆盖表单字段验证的合理解释。我需要将密码字段验证设置为至少7个字符、至少一个小写字母、至少一个大写字母和至少一个数字。我发现alreade的所有解决方案似乎都不起作用。有什么想法吗?您应该创建一个自定义约束类,如 在isValid方法中添加正则表达式 添加自定义错误消息 使用validation.yml(如果愿意,也可以使用注释)将约束类添加到实体类中 这应该符合您的需要使用标准的Regex约束,使用以下模式/(?=.

我在Symfony2项目中使用FOSUserBundle。我找不到任何关于如何覆盖表单字段验证的合理解释。我需要将密码字段验证设置为至少7个字符、至少一个小写字母、至少一个大写字母和至少一个数字。我发现alreade的所有解决方案似乎都不起作用。有什么想法吗?

您应该创建一个自定义约束类,如

  • 在isValid方法中添加正则表达式
  • 添加自定义错误消息
  • 使用validation.yml(如果愿意,也可以使用注释)将约束类添加到实体类中

  • 这应该符合您的需要

    使用标准的
    Regex
    约束,使用以下模式/(?=.[a-Z])(?=.[a-Z])(?=.[0-9])。{7,}/

    class User extends FOSUser
    {
    
        /**
         * @Assert\Regex(
         *  pattern="/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{7,}/",
         *  message="Password must be seven or more characters long and contain at least one digit, one upper- and one lowercase character."
         * )
         */
        protected $plainPassword;
    
    }
    

    这会添加新的约束吗?还是删除并添加?