Cakephp - Обновление информации о зарегистрированном пользователе - PullRequest
2 голосов
/ 21 декабря 2009

У меня есть контроллер с именем sales_controller на этом контроллере. Я получил функцию, в которой хочу:

  1. обновить информацию о продаже -> СДЕЛАНО
  2. создать новую запись на другой модели -> DONE
  3. обновить поле в пользовательской записи -> ПРОБЛЕМА

Моя последняя попытка сделать это была:

App::import('model','User');
$user= $this->Auth->user();
$nr = $this->Auth->user('nr') - 1 ;

if($user->save(array('nr'=>$nr)))
{
    $this->Session->setFlash(__('DONE! ', true));
    this->redirect(array('action'=>$page,$params));
}

Я знаю, что метод $ this-> Auth-> user () возвращает массив, и я прочитал, что «save» не работает для массивов ...

Я пытался вызвать функцию чтения для пользователей, но я до сих пор не знаю, как мне это сделать.

Это должно быть что-то простое, но я все еще новичок, смеется.

Так, кто-нибудь может мне помочь?

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

Попробуйте это:

App::import('Model', 'User');
$user = new User();
$user->id = $this->Auth->user('id');

/* if you really need to store the entire array, instead of accessing individual fields as needed */
$user_info = $this->Auth->user();

/* in saveField, add 'true' as a third argument to force validation, i.e. $user->saveField('nr', $this->Auth->user('nr') - 1, true) */
if ($user->saveField('nr', $this->Auth->user('nr') - 1)) {
   $this->Session->setFlash(__('DONE! ', true));
   this->redirect(array('action' => $page, $params));
}
0 голосов
/ 21 декабря 2009

Вы загрузили объект User, но ничего с ним не делаете. Вы установили значение $ user в массив, возвращаемый из объекта Auth, а затем пытаетесь вызвать для него метод save. Вы хотите вызвать save для объекта User.

Я думаю, что вы пытаетесь сказать:

$this->User->id = $this->Auth->user('id');
$this->User->save(array('nr'=>$nr));
...