如何在FOSUserBundle中覆盖密码验证

paw*_*isz 7 passwords validation symfony fosuserbundle

我在Symfony2项目中使用FOSUserBundle.我找不到任何合理的解释如何覆盖表单字段验证.我需要将密码字段验证设置为至少7个字符,至少一个小写字母,至少一个大写字母和至少一个数字.我找到的解决方案似乎没有任何解决方案.有任何想法吗?

Tam*_*lyn 15

使用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;

}
Run Code Online (Sandbox Code Playgroud)


Jul*_*lin 1

您应该创建一个自定义约束类,如文档中所述

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

这应该适合你的需求