我在使用 cakePhp 2.x 创建的网站中遇到问题,当我尝试注册帐户时,我的表单检查了我的所有字段规则,并且 beforeSave 加密了密码,但在使用确认检查密码(MatchPassword)之前加密了密码密码,然后返回两个密码不相等的错误,因为密码是 40 个字符的密码。
这是我的模型代码,我该如何解决这个问题?
<?php
//questo modello interessa lòa tabella User
class User extends AppModel{
public $name = 'User'; //non utilizzata nel sito è il nome del modello alla fine per migliorare la compatibilità
public $validate = array(
'password' => array(
'non_vuoto' => array(
'rule'=> 'notEmpty',//non è vuoto metodo che eredito da appmodel
'message'=> 'La password non può essere vuota'
),
'min_lunghezza' => array(
'rule' => array('minLength',5),
'message' => 'La password deve contenere almeno 5 caratteri'
),
'max_lunghezza' => array(
'rule' => array('maxLength',15),
'message' => 'La password deve contenere al massimo 15 caratteri'
),
'password_uguale' => array(
'rule' => 'matchPasswords',
'message' => 'Not equal password'
)
),
'password_confirm' => array(
'non_vuoto' => array(
'rule'=> 'notEmpty',//non è vuoto metodo che eredito da appmodel
'message'=> 'La password non può essere vuota'
)
)
);
public function matchPasswords($data){
if ($data['password']==$this->data['User']['password_confirm']){
return true;
}
$this->invalidate('password_confirm','Le due password non coincidono');
return false;
}
public function beforeSave(){
//crypt
if (isset($this->data['User']['password'])){
$this->data['User']['password']=AuthComponent::password($this->data['User']['password']);
}
return true;
}
}
?>