CakePHP编辑用户提供validationErrror

时间:2013-08-16 10:28:36

标签: php cakephp

我正在使用CakePHP作为我的应用程序,我有一个用户模型。此用户有一个密码,其中包含要验证的正则表达式。 正则表达式强制用户使用至少6个字符长的密码,其中包含至少1个数字和特殊字符。

验证如下:

'password' => array(
     'ruleName' => array(
     'rule' => array('custom', '/^.*(?=.{6,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=]).*$/i'),
            'message' => 'Password not legit',
            'allowEmpty' => true
     )
)

当我想编辑密码时,此验证效果很好。但是当我想编辑用户时(没有更改密码的选项),$ this-> User-> save()会失败。

如果我调试我的$ this-> User-> validationErrors,则显示的唯一内容是:

array(
    'password' => '*****'
)

密码字段未在我的发布数据中设置,因此根本不应进行验证。 当我评论这块验证码时,可以保存用户。

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

我自己已经解决了。在保存User对象之前,我已经为其他目的做了$ this-> User-> Read(null,$ userid)。

这导致记住$ this-> User对象中的read(包括密码)值。

由于在$ this-> User对象上调用了save方法,因此密码值也会尝试保存。但由于** * 根据正则表达式无效,因此保存失败。

感谢您的帮助!