#cakephp
#cakephp
Вопрос:
Я начал изучать CakePHP, и теперь я столкнулся со следующей проблемой. Как можно разрешить моим пользователям изменять свой профиль (их информацию в БД).
Это моя модель -> http://bin.cakephp.org/view/798927304 Я использую эти проверки , когда кто — то пытается зарегистрироваться . Это мой метод редактирования профилей: http://bin.cakephp.org/view/841227800
Сначала я проверяю, есть ли у пользователя разрешение на редактирование этого профиля (является ли профиль его собственным). Затем получите желаемый идентификатор и попытайтесь сохранить запрос-> данные… Но, к сожалению, безуспешно.
И последнее, это мое мнение -> http://bin.cakephp.org/view/1798312426
Единственное, что я хочу сделать, это: -Изменить их адрес электронной почты (если они добавляют новое электронное письмо) -Изменить их социальные профили (если они их добавляют) -Изменить их пароль (если они его добавляют)
Можете ли вы помочь мне сделать это?
Заранее спасибо!
Ответ №1:
Обычно, когда вы вызываете сохранение, как в:
$this->User->save($this->request->data)
Данные в $this->request->data по умолчанию очищены. В вашем методе редактирования у вас есть оператор if ниже, который снова использует то же сохранение.
Функциональность по умолчанию, которую, я полагаю, вы скопировали из метода редактирования cakebaked, обычно выполняет сохранение и использует возвращенную логику для включения этого оператора 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'));
}
Ответ №2:
if($this->Auth->user() amp;amp; $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
может делать то, что вам нужно.
подробнее @ http://book.cakephp.org/view/1031/Saving-Your-Data