You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在header.blade.php中获取并展示已认证用户的头像

实现方案

方案1:使用视图合成器(仅给header模板传递数据,无冗余资源消耗)

Laravel 支持指定视图单独传递全局公共数据,不需要每个控制器单独处理:

  1. 打开app/Providers/AppServiceProvider.php,修改boot方法:
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;
use App\Models\Avatar; // 替换为你自己的Avatar模型实际命名空间

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // 仅给header模板传递头像数据,替换为你自己header模板的实际路径
        View::composer('layouts.header', function ($view) {
            if (Auth::check()) {
                $view->with('myAvatar', Avatar::find(Auth::user()->avatar_id));
            }
        });
    }
}
  1. 直接在header.blade.php中调用即可,记得加非空判断:
@if(Auth::check() && $myAvatar)
<img style="border-radius: 50%;" src="{{url('/')}}/Uploads/avatars/{{$myAvatar->image}}" height="60px" width="60px" alt="用户头像">
@else
<!-- 可替换为自己的默认头像路径 -->
<img style="border-radius: 50%;" src="{{url('/')}}/Uploads/avatars/default.png" height="60px" width="60px" alt="默认头像">
@endif

方案2:给User模型加关联关系(更简洁优雅的推荐方案)

不需要额外传递任何变量,直接在模板通过模型关联读取:

  1. 打开User模型文件,添加头像关联方法:
// App\Models\User.php
public function avatar()
{
    return $this->belongsTo(Avatar::class, 'avatar_id');
}
  1. 直接在header.blade.php中调用,无需任何额外传参操作:
@auth
<img style="border-radius: 50%;" src="{{url('/')}}/Uploads/avatars/{{ optional(Auth::user()->avatar)->image ?? 'default.png' }}" height="60px" width="60px" alt="用户头像">
@endauth

如果使用Laravel 8及以上版本,也可以用空安全运算符简化写法:Auth::user()->avatar?->image


内容的提问来源于stack exchange,提问作者Dr.Noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:06:00