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

时间:2016-09-30 16:48:21

标签: php cakephp

好的,我已经阅读过各种帖子,例如CakePHP 3.x - AuthComponent::user() in View但是那里的解决方案没有告诉你哪里放置代码,以便它可以在应用程序的任何地方使用。< / p>

在CakePHP 2.x中,在登录用户的导航栏中显示这样的用户名非常简单。这样做的方法是使用Auth组件,然后在AppController中设置一些可以使用用户详细信息(名字,姓氏等)数组设置全局可访问变量。

在CakePHP 3.x中,我无法看到如何实现这一目标。

$this->Auth->user('id');等内容似乎只能在控制器中运行。

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

2 个答案:

答案 0 :(得分:0)

通过会话访问

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

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

答案 1 :(得分:0)

请注意,组件用于控制器,助手用于模板。在构建Auth帮助器时没有。

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

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

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

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

参考:Accessing the Session Object