CakePHP:用户编辑后更新所有表?
Posted
技术标签:
【中文标题】CakePHP:用户编辑后更新所有表?【英文标题】:CakePHP : Updating all tables after user edit? 【发布时间】:2014-04-23 11:38:42 【问题描述】:我在一个 Cakephp 网站上工作,其中大部分都可以工作,但我正在尝试更新用户页面(我现在重定向到该页面,一旦我让它工作,我计划将其作为 AJAX 更新)。现在代码确实可以工作了,
if ($this->request->is('post'))
$this->loadmodel('Setting');
$this->loadmodel('Address');
if ( $this->User->save($this->request->data, $validate = true, $fieldList = array('firstname','surname','homephone','mobilephone','dob','gender')) )
$NewUserID = $this->Auth->user('id');
$this->Session->write('Auth', $this->User->read(null,$NewUserID));
$this->Session->setFlash('Update done :)', 'GoodFlashMsg', array(), 'Good');
$this->redirect('/user');
else
$this->Session->setFlash('Sorry :( There has been an error, please try again', 'BadFlashMsg', array(), 'Bad');
$this->redirect('/');
//End of POST
现在这就是它的意思,保存更新的用户详细信息(地址是另一个表,我稍后会做)。但是当我重新加载用户 ID 以刷新 Auth Session 信息时,Address 表信息似乎从 Auth Session 中被擦除,因为当它重新加载重定向页面时地址信息是空白的?
当用户编辑任何信息(无论是用户详细信息还是地址详细信息)时,我只是试图更新身份验证信息(所有这些信息,地址表都通过 ID 链接到用户表)。
谢谢。
【问题讨论】:
【参考方案1】:使用debug($_SESSION)
比较您的$this->Session->write('Auth', $this->User->read(null,$NewUserID));
语句之前和之后存储在会话中的用户信息的数组格式。你会发现数组格式不一样。因此,以预期的格式存储信息,因为您的问题将得到解决。
您还应该在将信息设置为会话之前取消设置密码字段。
【讨论】:
是的,我已经这样做了,我在运行保存之前对“$this->Auth->user”进行了调试,然后再运行一次。之后的调试已经删除了我链接到它的表。我只是不确定如何重新构建它,以便它不会删除链接的数据?谢谢。 完成了,非常感谢,我考虑构建它并以不同的方式编辑信息。所以我做了什么,不确定它是否正确:( - 只是用 '$this->Session->write('Auth.user', array ($this->User->read(空,$NewUserID)));'以上是关于CakePHP:用户编辑后更新所有表?的主要内容,如果未能解决你的问题,请参考以下文章
在 cakephp 中编辑用户配置文件后如何更改身份验证用户名