CakePHP и изменение профиля пользователя

#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