よくよく見てみると、パスワード変更して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('パスワードの変更でエラーが起きました。');
}
これで更新されるようになったよ…
なんかイマイチな気がする。
他に手があるんだろうか?
ありがとうございました。助かりました!
返信削除