よくよく見てみると、パスワード変更してusersテーブル見てみたら、modifiedが更新されてないでやんの。('A`)
ググってみたりしたけどイマイチわからず。
で、行き着いたところが、「updateするmodelのmodifiedに値が入ってると、その値でアップデートする」ということだ。
$this->loadModel('User'); $userInfo = $this->User->findById($this->Session->read('Auth.User.id'));なんてやっといて、
$userInfo['User']['password'] = $newPassword1; if (!$this->User->save($userInfo, array( 'validate' => true, 'fieldList' => array('password')))) { $this->tx->rollback(); return $this->passwordChangeError('パスワードの変更でエラーが起きました。'); }ってやると、findByした時の値が入ってるから、更新されない。だからsave前にnullを突っ込んでやる。
$userInfo['User']['password'] = $newPassword1; $userInfo['User']['modified'] = null; // ######################### ここ ##################### if (!$this->User->save($userInfo, array( 'validate' => true, 'fieldList' => array('password')))) { $this->tx->rollback(); return $this->passwordChangeError('パスワードの変更でエラーが起きました。'); }これで更新されるようになったよ… なんかイマイチな気がする。 他に手があるんだろうか?
ありがとうございました。助かりました!
返信削除