2011-11-10 5 views
0

私がログインしている誰にチケットを追加することに問題を抱えているのCakePHP 1.3では、この行は完全に正常に動作:動作するようになりました$this->Session->read('user_id');cakephp 2.0でログインしたユーザーの下でチケットを追加するには?

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->data['Ticket']['user_id'] = $this->Auth->user();ここでは完全な追加アクションがあります。まあ、2つのどちらかがチケットを追加しますが、user_idは空白です。どんな助けでも大歓迎です。

+0

}

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')); 

を> Auth->ユーザー()?私はこれが実際にはidだが、キーの配列であるとは思わない。 pr()を使って実際に何が返されたのか調べます。 – mark

+0

pr($ this-> Auth-> user( 'id'));ログインしている現在のユーザーの正しいIDである1を返します。IDが保存されていない理由は何ですか? – Lyman

答えて

2

$ this-> Auth-> user()は、ユーザーに関するさまざまなフィールドを持つ配列を返します。

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

それとも、あなたは変数最初に結果を割り当ててからチケットに添付することもできます:私はあなたと4行目に置き換えるべきだと思い、私は何が起こっているか見

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

EDIT

今。オブジェクトを編集してから要求データを保存しているので、ユーザーIDが保存に渡されることはありません。

することは、この試してみてください:あなたはの$ this - の戻り値をデバッグでした

+0

これは実際に私が$ this-> data ['Ticket'] ['user_id'] = $ this-> Auth-> user( 'id');それは動作しません。 1.3との作業に使用されました。私は上記のコードの後に​​次の2行を追加するのを忘れていました:$ users = $ this-> Ticket-> User-> find( 'list'); $ this-> set(compact( 'users')); – Lyman

+0

$ this-> Auth-> user( 'id');の出力をデバッグできますか?それは何かを出力していますか?あなたが実際に認証されていない可能性はありますか? CakePHPはAuthモジュールを2.0でかなり変更しました。この問題は、この関数ではなく認証の仕方にあるかもしれません。 –

+0

pr($ this-> Auth-> user( 'id'));ログインしている現在のユーザーの正しいIDである1を返します。IDが保存されていない理由は何ですか? – Lyman

関連する問題