CakePHP3将用户置于default.ctp中

kh.*_*tab 5 php cakephp cakephp-3.0

您好我在CakePHP 3项目上工作..

我想从default.ctp显示已登录用户的用户名,所以我试过这个:

//in default.ctp   
 $user = $this->Session->read('Auth.User');
    if(!empty($user)) {
        echo 'Hi ', $user['user_name'];
    }
Run Code Online (Sandbox Code Playgroud)

它不起作用,我发现其他解决方案告诉将当前用户从AppController放入会话中它也不起作用这是它:

// in AppController      
function beforeFilter(){
  $user = $this->Session->read('Auth.User');
  $this->set('username', $user['username']);
}
Run Code Online (Sandbox Code Playgroud)

并在default.ctp中:

<?=$username?>
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗 ?

bur*_*zum 8

访问会话是错误的方法.CakePHP中的auth系统可以处理用户的不同来源,例如,会话不适用于无状态身份验证系统.

因此,正确的方法是从抽象的身份验证系统中获取用户,而不是直接从会话中读取它.在会话密钥更改的情况下,会话方法也会搞砸.

在AppController中只需添加:

public function beforeRender() {
    $this->set('user', $this->Auth->user());
}
Run Code Online (Sandbox Code Playgroud)

然后访问视图中的$ user var.我的插件甚至包含一个帮助程序来处理视图中用户数据的常见任务.


Viv*_*ngh 4

<?php   $session = $this->request->session(); // less than 3.5
        // $session = $this->request->getSession(); // 3.5 or more
        $user_data = $session->read('Auth.User');
        if(!empty($user_data)){
            print_r($user_data);
  }?>
Run Code Online (Sandbox Code Playgroud)

试试这个希望它有帮助..