在 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="<?=%20Url::to(['site/login'])%20?>">登录</a></p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/gongju/2519" title="Yii Framework 2.0.51"><img
src="https://img.php.cn/upload/manual/001/503/042/6a6b03d191dbf935.png" alt="Yii Framework 2.0.51" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/gongju/2519" title="Yii Framework 2.0.51" class="overflowclass">Yii Framework 2.0.51</a>
<p class="overflowclass">Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。</p>
</div>
<a rel="nofollow" href="/xiazai/gongju/2519" title="Yii Framework 2.0.51" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<?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 方法)









