2015-05-19 22 views
0

我在我的项目中有一个名为Customer的成员。我需要验证PasswordField。SilverStripe中的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
  1. 从您的代码中删除那个丑陋的@并观看那个美丽的错误消息。错误抑制是一个非常糟糕的做法,您应该避免这种情况

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

如果你告诉我们更多的代码,我可以试着帮你实现它的权利。

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

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

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

然后使用

$fields->push($passwordField); 
+0

$ passwordField添加到您的FieldList e.g当我给在ConfirmedPasswordField.php的MINLENGTH到它工作正常的长度。有没有其他的方式来验证密码字段的最小长度而不改变ConfirmedPasswordField.php中的minLengthin。客户是一个对象 – user3358839

+0

嗨,我修改我的答案与演示代码如何在您的FieldList中使用ConfirmedPasswordField。如果它适用于你随时接受它;) – wmk

+0

是否有一种方法来设置最小长度paswordfield在相同的地方itis创建,而不是在ConfirmedPasswordField.php最小长度。页。 – user3358839