好的,我已经阅读了各种帖子,如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
.......
)
参考:访问会话对象