CakePHP 3 - 记录无法保存在我的登录功能中
Posted
技术标签:
【中文标题】CakePHP 3 - 记录无法保存在我的登录功能中【英文标题】:CakePHP 3 - record can not be saved in my login function 【发布时间】:2016-04-12 07:37:06 【问题描述】:记录无法保存在我的登录功能中。我不知道为什么。 有谁知道问题是什么? 控制器中的其他功能(添加、编辑、删除)正常工作。
...
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'));
...
【问题讨论】:
代替 newEntity() 使用 patchEntity() 来更新您的用户记录 “无法保存”不是正确的问题描述!即使问题对于了解 Cakephp 内部结构的人来说可能很明显,但请始终尽可能具体地说明究竟会发生什么,以及您希望发生什么。显示您正在使用的数据(例如用户数据)、上下文(例如您的实体代码)、您的调试尝试和可能的错误。收集这些信息时,问题通常会自行解决。 【参考方案1】:为什么你使用 newEntity
?
尝试删除它并做一些类似的事情:
$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();
【讨论】:
【参考方案2】:它是这样工作的:
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'));
【讨论】:
以上是关于CakePHP 3 - 记录无法保存在我的登录功能中的主要内容,如果未能解决你的问题,请参考以下文章