我已经开始学习cakePHP了,现在我遇到了以下问题。如何允许我的用户更改他们的个人资料(他们在数据库中的信息)。
这是我的模特 - > http://bin.cakephp.org/view/798927304当有人试图注册时,我会使用这些验证。 这是我编辑个人资料的方法:http://bin.cakephp.org/view/841227800
首先,我检查用户是否有权编辑此个人资料(他自己的个人资料)。 然后获得所需的ID并尝试保存请求 - >数据......但遗憾的是没有成功。
最后这是我的观点 - > http://bin.cakephp.org/view/1798312426
我想做的唯一事情是: - 更改他们的电子邮件(如果他们添加新电子邮件) - 改变他们的社交档案(如果添加他们) - 更改密码(如果他们添加密码)
你可以指导我做这些事吗?
提前致谢!
答案 0 :(得分:2)
通常,当您调用保存时,如:
$this->User->save($this->request->data)
默认情况下,$ this-> request->数据中的数据已清除。在您的编辑方法中,下面有一个if语句,它再次使用相同的保存。
我假设您从蛋糕编辑方法中复制的默认功能通常执行保存并使用返回的逻辑来为if语句提供支持。第二次调用它时,可能会返回false,这可能会跳过if语句。
为了调试这个,我建议在不同的地方使用其中的几个:
debug($this->request->data);
此外,调试打印输出在重定向时被清除,因此同时您可能想要在if语句中注释掉重定向,如下所示:
if ($this->User->save($this->request->data)) {
$this->Session->setFlash('Успешно променихте профила си.', 'success_message');
//$this->redirect(array('action' => 'profile'));
}
答案 1 :(得分:0)
if($this->Auth->user() && $this->Auth->user('id') == $id) {
$this->User->read(null, $id);
$this->User->set(array(
'email' => $this->data['User']['email'],
'password' => $this->data['User']['password'],
'social_profile' => 'bla bla'
));
$this->User->save();
// etc
可以做你想要的事。