2016-04-12 106 views
-1

記錄無法保存在我的登錄功能中。我不知道爲什麼。 有誰知道這個問題是什麼? 控制器中的其他功能(添加,編輯,刪除)可以毫無問題地工作。CakePHP 3 - 記錄無法保存在我的登錄功能中

... 
class UsersController extends AppController 
{ 
... 
    /** 
    * Login method 
    */  
    public function login() 
    { 

    if ($this->request->is('post')) { 
     $user = $this->Auth->identify(); 
     if ($user) { 
      $this->Auth->setUser($user); 
      $user = $this->Users->newEntity($user,['validate' => false]); 
      $user->isNew(false); 

      //Last login date 
      $user->test = 'abcdef'; 
      $user->modified = new Time(); 
      $this->Users->save($user); 
      return $this->redirect($this->Auth->redirectUrl()); 
     } 
     $this->Flash->error(__('Error')); 
    } 
    } 
... 
} 
+0

改爲newEntity()使用patchEntity()更新您的用戶記錄 – Salines

+1

「_can not be saved_」不是正確的問題描述!即使問題對於瞭解CakePHP內部的人來說可能是顯而易見的,請始終儘可能具體說明_exactly_發生了什麼,以及您期望發生什麼。顯示您正在使用的數據(例如用戶數據),上下文(例如實體代碼),調試嘗試以及可能的錯誤。收集這些信息時,問題通常會自行解決。 – ndm

回答

1

爲什麼使用newEntity? 嘗試刪除它,然後做一些liek此:

$this->Auth->setUser($user); 
      $user->isNew(false); 
      $user->validate=false; 
      //Last login date 
      $user->test = 'abcdef'; 
      $user->modified = new Time(); 
      $this->Users->save($user); 

如果它不工作,試圖表明實體錯誤知道爲什麼:

前:$this->Users->save($user);

這樣做:

debug($user->errors()); die();

1

它可以這樣工作:

public function login() 
     { 

     if ($this->request->is('post')) { 
      $authUser = $this->Auth->identify(); 
      if ($authUser) { 
       $this->Auth->setUser($authUser);    
       $User = $this->Users->get($authUser['id']); 
       //Last login date 
       $User->modified = new Time(); 
       $this->Users->save($User); 
       return $this->redirect($this->Auth->redirectUrl()); 
      } 
      $this->Flash->error(__('Error')); 
     } 
     }