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

Laravel:同一视图调用菜单与用户表数据及显示异常排查

解决Laravel视图无法显示当前用户信息的问题

核心问题

你在MenuController的index方法中注入的User $user是路由模型绑定,但你的路由未传递用户ID参数,导致这个$user是一个空的User实例,而非当前登录用户的数据。而你已经通过Auth::user()获取了当前登录用户,只需直接使用这个实例即可。

修改后的MenuController代码

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Menu;
use App\Models\User;

class MenuController extends Controller
{
    public function index()
    {
        // 获取当前登录用户实例
        $user = Auth::user();
        // 获取该用户关联的菜单数据
        $menus = $user->menus()->get();

        // 直接传递user对象和菜单数据到视图
        return view('menus.index', [
            'menus' => $menus,
            'user' => $user
        ]);
    }

    // 其他无关代码省略
}

为什么这样修改?

  1. 路由模型绑定需要路由中包含{user}参数(例如/dashboard/menu/{user}),但你的路由显然没有这个参数,所以注入的$user是空对象,自然无法读取name等字段。
  2. Auth::user()会返回当前已登录用户的完整数据库实例,包含所有你需要的字段(name、tittle、bio等)。

视图部分无需修改

你的视图代码中{{ $user->name }}写法正确,修改控制器后即可正常显示用户名称。

额外注意事项

  • 确保该路由已添加auth中间件,强制用户登录后才能访问:
    // 在routes/web.php中配置
    Route::get('/dashboard/menu', [MenuController::class, 'index'])->middleware('auth');
    
  • 检查User模型中的字段名是否与数据库一致,比如tittle是否是数据库中的实际字段(可能是title的拼写错误)。

内容的提问来源于stack exchange,提问作者caktasnino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:44:55