CakePHP & Изменить профиль пользователя - PullRequest
0 голосов
/ 27 октября 2011

Я начал изучать cakePHP и теперь сталкиваюсь со следующей проблемой. Как разрешить моим пользователям изменять свой профиль (информацию в БД).

Это моя модель -> http://bin.cakephp.org/view/798927304 Я использую эти проверки, когда кто-то пытается зарегистрироваться. Это мой метод редактирования профилей: http://bin.cakephp.org/view/841227800

Сначала я проверяю, есть ли у пользователя разрешение на редактирование этого профиля (это собственный профиль). Затем получите нужный идентификатор и попытайтесь сохранить запрос-> данные ... Но, к сожалению, безуспешно.

И последнее, это мое мнение -> http://bin.cakephp.org/view/1798312426

Единственное, что я хочу сделать, это: -Измените свою электронную почту (если они добавляют новую электронную почту) -Измените их социальные профили (если добавите их) -Измените свой пароль (если они его добавят)

Можете ли вы научить меня делать эти вещи?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Обычно, когда вы вызываете сохранение, как в:

$this->User->save($this->request->data)

Данные в $ this-> request-> data очищаются по умолчанию. В вашем методе редактирования у вас есть оператор if, который снова использует то же самое сохранение.

Функциональные возможности по умолчанию, которые, как я полагаю, вы скопировали из метода редактирования «cakebaked», обычно сохраняются и используют возвращенную логику для включения оператора if. Во второй раз, когда вы вызываете его, вы можете получить ложное возвращение, которое, вероятно, пропускает этот оператор if.

Для отладки я предлагаю несколько из них в разных местах:

debug($this->request->data);

Кроме того, отладочные распечатки очищаются при перенаправлении, поэтому, в то же время, вы можете закомментировать перенаправление внутри оператора if следующим образом:

if ($this->User->save($this->request->data)) {
    $this->Session->setFlash('Успешно променихте профила си.', 'success_message');
    //$this->redirect(array('action' => 'profile'));
}
0 голосов
/ 27 октября 2011
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

может делать то, что вы после.

больше @ http://book.cakephp.org/view/1031/Saving-Your-Data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...