如何在FOSUserBundle中覆盖密码验证

时间:2013-02-21 15:08:56

标签: validation symfony passwords fosuserbundle

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

2 个答案:

答案 0 :(得分:14)

使用具有以下模式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;

}

答案 1 :(得分:1)

你应该创建一个自定义约束类,如described in documentation

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