SilverStripe

时间:2015-05-19 05:45:28

标签: validation passwords silverstripe

我的项目中有一个名为Customer的成员。我需要验证PasswordField。

我在我的页面中创建了一个包含PasswordField的函数,如下所示

function getValidator() {

    $data = $this->loadData();              

    if (@$data['Password']->minLength(7)) {
        return $this->validationError('Password', 'Password field should contain minimum 7 charactors', 'bad');         
    }   
}

这不会给出任何结果。我如何使这个工作?

1 个答案:

答案 0 :(得分:1)

  1. 从代码中删除那个丑陋的@并观看这个漂亮的错误消息。错误抑制是一种非常糟糕的做法,你应该避免这种情况

  2. PasswordValidator对象已经使用了一个类Member,可以检查密码的最小长度。 (See API Docs for PasswordValdiator

  3. 如果您向我们展示更多代码,我可以尝试帮助您正确实施。

    您的Customer对象是会员的子类吗?密码在哪里更改?什么FormField用于密码?还有一个ConfirmedPasswordField显示两个用于匹配密码的屏蔽字段,您可以在其中设置最小长度。

    因此,假设您将密码保存在名为Password的字段中,您可以设置字段,例如

    $passwordField = ConfirmedPasswordField('Password', 'Choose a password');
    $passwordField->minLength = 7; //there is no setter method for that right now
    

    然后使用

    将$ passwordField添加到FieldList
    $fields->push($passwordField);