【问题标题】:Get the name of the user in yii2yii2中获取用户名
【发布时间】:2015-03-07 15:45:40
【问题描述】:

如何获取yii2中的登录用户名? 我可以通过

获取用户ID
Yii::$app->user->id;

我知道我可以在数据库中找到该名称,但我想要一个直接的方法。 数据库中的name-column名为“username”,但是

Yii::$app->user->username;

不起作用并且

Yii::$app->user->name;     

也不行。

【问题讨论】:

    标签: php yii2


    【解决方案1】:

    登录时,用户信息将存储在Yii::$app->user->identity 变量中。

    有关更多信息,请阅读官方指南中的User Authentication documentation

    【讨论】:

      【解决方案2】:

      虽然@thepeach 的答案有效,但您实际上可以扩展 User 组件并添加您自己的函数,以便您可以像最初尝试做的那样通过 Yii::$app->user->something 获取它们。

      我喜欢从一开始就扩展这样的东西,所以我准备好添加自定义功能而无需重构任何代码。以一种方式做事很糟糕,然后必须回去修复 100 个代码点,因为你后来更改了它。

      首先,在你的配置中定义一个用户组件类:

      'components' => [
          'user' => [
              'class' => 'app\components\User', // extend User component
          ],
      ],
      

      然后在您的components 目录中创建User.php。如果您尚未创建此目录,请在您的应用根目录中创建它。

      用户.php

      <?php
      namespace app\components;
      
      use Yii;
      
      /**
       * Extended yii\web\User
       *
       * This allows us to do "Yii::$app->user->something" by adding getters
       * like "public function getSomething()"
       *
       * So we can use variables and functions directly in `Yii::$app->user`
       */
      class User extends \yii\web\User
      {
          public function getUsername()
          {
              return \Yii::$app->user->identity->username;
          }
      
          public function getName()
          {
              return \Yii::$app->user->identity->name;
          }
      }
      

      现在您可以通过Yii::$app-&gt;user-&gt;something 访问这些内容。

      例如,将其放在您的一个视图中并在浏览器中访问该页面:

      <?= \Yii::$app->user->username ?>
      

      我写了一个更详细的答案here,对此进行了更深入的介绍。

      【讨论】:

      • 您可以只使用$this-&gt;identity 而不是\Yii::$app-&gt;user-&gt;identity
      【解决方案3】:

      简单,只需使用:

      <?= \Yii::$app->user->identity->username ?>
      

      【讨论】:

        【解决方案4】:
        $user_id = Yii::$app->user->id;
        $user_name = User::find()->where(['id'=>$user_id])->one()->username;
        

        【讨论】:

          【解决方案5】:

          我总是喜欢下面的代码来查找当前用户。仅使用它,您将获得身份。

          \Yii::$app->user->identity->username;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多