2011-11-10 51 views
0

我在加入车票不管是谁登录的问题,CakePHP的1.3这条线工作完全正常:$this->data['Ticket']['user_id'] = $this->Auth->user();下面是完整的附加动作:如何在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->Session->read('user_id');作品。那么,两者中的任何一个都添加了票据,但user_id是空白的。任何帮助将不胜感激。

+0

你调试的$这个 - 返回值> Auth->用户()?我怀疑这实际上是一个id,但是是一组键。使用pr()来找出实际返回的内容。 – mark

+0

pr($ this-> Auth-> user('id'));返回1,这是登录的当前用户的正确ID。任何想法为什么ID未被保存? – Lyman

回答

2

$ 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']; 

编辑

我看到发生了什么现在。您正在对对象进行编辑,然后保存请求数据...所以您的用户ID永远不会传递给保存。

试试这个:

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

}

+0

对不起,这实际上是我$ this-> data ['Ticket'] ['user_id'] = $ this-> Auth-> user('id');它不起作用。曾经与1.3一起工作。我忘了在我的代码之后添加这两行:$ users = $ this-> Ticket-> User-> find('list'); $ this-> set(compact('users')); – Lyman

+0

是否可以调试$ this-> Auth-> user('id');?的输出它输出什么东西?事实上,你有没有可能被认证? CakePHP用2.0改变了Auth模块,所以问题可能在于你如何进行身份验证而不是这个功能。 –

+0

pr($ this-> Auth-> user('id'));返回1,这是登录的当前用户的正确ID。任何想法为什么ID未被保存? – Lyman

相关问题