【问题标题】:CakePHP 3 - accessing user data in view (.ctp file)CakePHP 3 - 在视图中访问用户数据(.ctp 文件)
【发布时间】:2017-02-09 07:38:20
【问题描述】:

好的,我已经阅读了各种帖子,例如 CakePHP 3.x - AuthComponent::user() in View,但那里的解决方案并没有告诉您将代码放在 哪里,因此它可以在应用程序的任何地方工作。

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

在 CakePHP 3.x 中我看不到这是如何实现的。

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

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

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    通过会话访问

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

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

    【讨论】:

    • 或者,如果你想让它与有状态和无状态身份验证兼容,最好使用Tools Auth classes
    【解决方案2】:

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

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

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

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

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

    参考:Accessing the Session Object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      相关资源
      最近更新 更多