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 中编辑用户配置文件后如何更改身份验证用户名

cakephp 2 上的自动完成 Ajax

cakephp 没有将更新值保存到相关表,但没有错误

CakePHP hasOne belongsTo 关系,编辑/添加相同动作

Cakephp 2.2.3 habtm 保存到中间表

如何禁用所有用户的更新表