显示错误的用户数据CakePHP

时间:2016-06-19 18:43:29

标签: authentication cakephp

我只想显示当前登录的用户。我的Auth部分代码来自2.x cookbook。

问题如下:

我目前有2个用户在系统中。用户A和用户B.用户B是第二个创建的。它不是显示当前用户,而是显示用户B.我认为这是因为用户B是最后创建的,因为如果我创建用户C,它将显示用户C。

这是我的行动:

public function index($id = null) {
    $this->set('strains', $this->Strain->find('all'));

    $this->loadModel('User');
    $users = $this->User->find('all');
    $this->set('users', $users);

    $this->set('userDataName', $this->Auth->user('id'));

    if($this->Auth->user()) {
        $this->User->id = $id;
        $user = $this->Session->write('user', $this->User->findById($id));
        $this->set('user', $user);
    }
}

以下是我视图中应该显示当前用户的行:

<?php echo $user['User']['username']; ?> 

我已经阅读了几个堆栈问题,但似乎没有人回过头来看这个具体情况。如有必要,我可以完全重写代码。感谢

2 个答案:

答案 0 :(得分:1)

显示当前会话用户的用户名的最简单方法是使用auth组件:

in controller
$user = $this->Auth->user(); // returns array with user data or null
$this->set('user', $user);

in view
echo $user['username'];

答案 1 :(得分:0)

这是一个逻辑错误

  

以下是我视图中应该显示当前用户的行:

<?php echo $user['User']['username']; ?>

在模板中,用户名取自$user变量。

public function index($id = null) {
        ...
        $this->User->id = $id;
        $user = $this->Session->write('user', $this->User->findById($id));
        $this->set('user', $user);
     }
}

用户变量取决于$id参数,而不是直接取决于当前登录的用户。

如何访问登录的用户数据

access the logged in user data最简单的方法是使用AuthComponent::user,即在模板中:

<?php echo AuthComponent::user('username'); ?>