Как добавить тикеты под залогиненным пользователем в cakephp 2.0? - PullRequest
0 голосов
/ 10 ноября 2011

У меня проблема с добавлением билета тому, кто вошел в систему. С cakephp 1.3 эта строка прекрасно работает: $this->data['Ticket']['user_id'] = $this->Auth->user(); Вот полное действие добавления:

public function add() {
  if ($this->request->is('post')) {
    $this->Ticket->create();
    $this->data['Ticket']['user_id'] = $this->Auth->user(); 
    if ($this->Ticket->save($this->request->data)) {
      $this->Session->setFlash(__('The ticket has been saved'));
      $this->redirect(array('action' => 'index'));
    } else {
      $this->Session->setFlash(__('The ticket could not be saved. Please, try again.'));
    }
  }

  $users = $this->Ticket->User->find('list');
  $this->set(compact('users'));
}

Даже код $this->Session->read('user_id'); не работает сейчас. Хорошо, любой из двух добавляет билет, но user_id пуст. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 10 ноября 2011

$ this-> Auth-> user () возвращает массив с различными полями о пользователе. Я думаю, вы должны заменить строку 4 на:

$this->data['Ticket']['user_id'] = $this->Auth->user('id');

Или вы можете сначала присвоить результаты переменной, а затем прикрепить к заявке:

$user = $this->Auth->user();
$this->data['Ticket']['user_id'] = $user['User']['id'];

EDIT

Я вижу, что сейчас происходит. Вы вносите изменения в объект, а затем сохраняете данные запроса ... поэтому ваш идентификатор пользователя никогда не передается в сохранение.

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

public function add() {
if ($this->request->is('post')) {
    $this->Ticket->create();
    $data = $this->request->data;
    $data['Ticket']['user_id'] = $this->Auth->user('id'); 
    if ($this->Ticket->save($data)) {
        $this->Session->setFlash(__('The ticket has been saved'));
        $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash(__('The ticket could not be saved. Please, try again.'));
    }
}

$users = $this->Ticket->User->find('list');
$this->set(compact('users'));

}

...