CakePHP 3 -在视图中访问用户数据.ctp文件)



好的,我已经阅读了各种帖子,如CakePHP 3。x - AuthComponent::user()在视图中,但解决方案没有告诉你在哪里的代码,所以它将在应用程序的任何地方工作。

在CakePHP 2。在登录用户的导航栏中显示用户名是很简单的。实现的方法是使用Auth组件,然后在AppController中设置一个全局可访问的变量,其中包含用户详细信息(名、姓等)。

在CakePHP 3。我看不出这是怎么做到的。

诸如$this->Auth->user('id');之类的东西似乎只在控制器中工作。

我知道你可以把它从控制器传递给视图。但是如果你想在全局模板中(例如default.ctp)呢?在CakePHP 3.x中如何做到这一点?Cake网站上的文档并没有真正告诉你,因为它只给出了$this->Auth->user('id');作为一个例子。

通过会话访问

$this->request->session()->read('User.name');

http://book.cakephp.org/3.0/en/development/sessions.html accessing-the-session-object

请注意,组件在控制器中使用,而helper在模板中使用。build中没有Auth helper

由于所有登录的Auth用户数据都存储在会话中,并且有session helper和session组件,因此我们可以在模板中使用前者。

$user = $this->request->session()->read('Auth.User');

这将以这种格式返回所有登录用户的详细信息:

Array(
  [id] => 1
  [username] => abc
  [email] => abc@xyz.com
  .......
)

参考:访问会话对象

最新更新