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;
}

私の質問は、モデルで現在のユーザーのパスワードの値を取得するにはどうすればよいですか?私はCakePHP2.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()はコントローラーメソッドであるため、モデルでは使用できません。セットアップはおおよそ次のようになります。

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);
于 2012-07-23T11:40:12.827 に答える