CakePHP编辑用户给出验证错误


CakePHP edit user gives validationErrror

我的应用程序使用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' => '*****'
)

我的帖子数据中没有设置密码字段,因此根本不应该进行验证。当我对这个验证代码块进行注释时,可以保存用户。

有人知道我做错了什么吗?

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

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

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

无论如何,谢谢你的帮助!