在 Yii2 视图中获取当前登录用户名,应先判断 !Yii::$app->user->isGuest,再通过 Yii::$app->user->identity->username 安全访问;若字段可能为空,可设默认值如 '游客' 或 '未知用户'。

在 Yii2 中,视图(View)里获取当前登录用户的用户名,最常用且安全的方式是通过 Yii::$app->user->identity 获取用户模型实例,再访问其用户名字段(通常是 username 或 nickname,取决于你 User 模型的定义)。
确认 User 模型有 username 字段
确保你的 User 模型(如 @app/models/User.php)中定义了可公开访问的 username 属性,并已映射到数据库字段:
- 若使用 ActiveRecord,默认会从表字段自动映射(如
username列存在即可) - 若重写了
getAttributeLabel()或使用了别名字段,需确认该属性可读(public 或有 getter 方法)
视图中直接获取用户名(推荐)
在视图文件(如 views/site/index.php)中写:
<?php if (!Yii::$app->user->isGuest): ?>
<p>欢迎,<strong><?= Yii::$app->user->identity->username ?></strong></p>
<?php else: ?>
<p>请先 <a href="<?= Url::to(['site/login']) ?>">登录</a></p>
<?php endif; ?>
注意:务必先判断 !Yii::$app->user->isGuest,避免未登录时调用 identity 导致 PHP Notice。
更健壮的写法(防空值)
如果担心 username 字段可能为空,或想提供默认值:
<?php
$username = Yii::$app->user->isGuest
? '游客'
: (Yii::$app->user->identity->username ?: '未知用户');
?>
<p>你好,<strong><?= $username ?></strong></p>
扩展:获取其他用户信息
同理,只要 User 模型中有对应字段(如 email、nickname、realname),都可通过 identity 访问:
Yii::$app->user->identity->emailYii::$app->user->identity->nickname-
Yii::$app->user->identity->getFullName()(如果定义了 getter 方法)


















