我在使用 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;
        }
    }
?>