如何在cakephp 2.0中的登录用户下添加票证?

如何在cakephp 2.0中的登录用户下添加票证?,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我在为登录的人添加票证时遇到问题。在CakePHP1.3中,这一行工作得非常好:$this->data['Ticket']['user\u id']=$this->Auth->user()以下是完整的添加操作: public function add() { if ($this->request->is('post')) { $this->Ticket->create(); $this->data['Ticket']['user_id'] = $

我在为登录的人添加票证时遇到问题。在CakePHP1.3中,这一行工作得非常好:
$this->data['Ticket']['user\u 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')现在可以工作了。嗯,这两个选项中的任何一个都会添加票证,但用户id为空。任何帮助都将不胜感激。

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

}

是否调试了$this->Auth->user()的返回值?我怀疑这实际上是id,而是一组密钥。使用pr()找出实际返回的内容。pr($this->Auth->user('id');返回1,它是当前登录用户的正确id。知道为什么没有保存id吗?抱歉,这实际上是我的$this->data['Ticket']['user\u id']=$this->Auth->user('id');但它不起作用。用于使用1.3。我忘了在上面的代码后面添加这两行:$users=$this->Ticket->User->find('list')$此->设置(压缩(“用户”);您是否能够调试$this->Auth->user('id');的输出;?它在输出什么吗?事实上,您是否可能没有经过身份验证?CakePHP在2.0中对Auth模块做了很大的更改,因此问题可能是如何进行身份验证,而不是如何使用此函数;返回1,它是当前登录用户的正确id。知道为什么身份证没有被保存吗?真漂亮!除了这一行之外,它工作得非常好,我认为您遗漏了'id'..$data['Ticket']['user_id']=$this->Auth->user();。。非常感谢你。