我刚学会了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。
答案 0 :(得分:2)
您可以像在控制器中一样从模型执行数据库查询。
因此,在您的用户模型中,您可以致电:
$this->find('first', array('conditions' => array('User.id' => $userId)));
或
$this->read(null, $userId);
当然,您必须将当前用户ID从控制器传递给模型方法。
如果您正在使用Cake提供的Auth组件,则可以致电$this->Auth->user('id')
以检索当前登录用户的ID(如果您的意思是&#34} ;当前用户")。 $this->Auth->user()
是一种控制器方法,因此无法在模型中使用。您的设置看起来大致如下:
UserModel方法:
public function getCurrentUserPassword($userId) {
$password = '';
$this->recursive = -1;
$password = $this->read('password', $userId);
return $password;
}
UsersController调用:
$userId = $this->Auth->user('id');
$this->User->getCurrentUserPassword($userId);