在我的“会员”模型中,我正在通过此自定义验证密钥/功能对来比较password
是否与password_confirm
匹配。
...'password_confirm' => array(
'compare' => array(
'rule' => array('validate_passwords'),
'message' => 'The passwords you entered do not match.',
'required' => true
),
'length' => array(
'rule' => array('between', 6, 20),
'message' => 'Your password must be between 6 and 20 characters.',
),
'empty' => array(
'rule' => 'notEmpty',
'message' => 'The password field must not be left blank.',
),
)...
function validate_passwords ...
function validate_passwords($data, $password_field = 'password', $hashed = true) {
$password = $this->data['Member']['password'];
$password_confirm = $hashed ?
Security::hash($data['password_confirm'], null, true) :
$data['password_confirm'];
return $password === $password_confirm;
}
我的网站有很多不同的部分,可以编辑成员。有些部分允许更改密码,而其他部分只允许成员编辑其生物。
但是,因为在用户编辑其bio的表单中没有password_confirm
字段(例如),验证总是在任何表单上返回false ,而不是具有{{1的表单现在。
是否有一种有效的方式来验证......
“仅当password_confirm
数组中存在password_confirm
密钥时才将密码与password_confirm进行比较
我无法在任何地方找到这个,我希望我不会重复现有的问题。
谢谢!
NB。我希望确保该字段在表单中确实存在时不会留空。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果validate_passwords
字段不存在,只需修改['password_confirm']
函数即可返回true。
如果确实存在,请检查是否首先empty()
(如果是,返回false)。
最后按照目前的状态进行剩余的检查。