0

我刚刚学习了 CakePHP,我希望用户在编辑自己的信息时输入他们的旧密码。

在我的模型 User.php

'password_old' => array(
                'match_old_password' => array(
                    'rule' => 'matchOldPassword',
                    'message' => 'Wrong password'
                ),
                'minlength' => array(
                    'rule'    => array('minLength', '8'),
                    'message' => 'Minimum 8 characters long'
                )
            )

我创建了一个函数 matchOldPassword

public function matchOldPassword(){
        if($this->data['User']['password_old']==$current_password){
            return true;
        }
        return false;
}

我的问题是,如何在模型中获取当前用户密码的值?我使用 CakePHP 2.1。

4

1 回答 1

2

您可以像在控制器中一样从模型中执行数据库查询。

因此,在您的用户模型中,您可以调用:

$this->find('first', array('conditions' => array('User.id' => $userId)));

或者

$this->read(null, $userId);

当然,您必须将当前用户 ID 从控制器传递给模型方法。如果您使用的是 Cake 提供的 Auth 组件,您可以调用$this->Auth->user('id')来检索当前登录的用户的 id(如果这就是您所说的“当前用户”)。$this->Auth->user()是一种控制器方法,因此不能在模型中使用。您的设置大致如下所示:

用户模型方法:

public function getCurrentUserPassword($userId) {
  $password = '';
  $this->recursive = -1;
  $password = $this->read('password', $userId);
  return $password;
}

用户控制器调用:

$userId = $this->Auth->user('id');
$this->User->getCurrentUserPassword($userId);
于 2012-07-23T11:40:12.827 回答