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

Laravel登录控制器传参至Blade报错:Undefined variable $userDataa

Laravel登录后传递用户变量报错"Undefined variable $userDataa"的解决办法

问题根源

  1. 路由逻辑不统一:你在LoginController中直接返回home视图并传递变量,但用户后续刷新页面或直接访问/home路由时,HomeController的index方法仅返回视图,未传递$userDataa,导致变量未定义报错。
  2. 冗余查询:登录成功后auth()->user()已能直接获取当前用户,无需额外执行User::find($id)重复查询。

方案一:统一路由逻辑,通过控制器传递变量

1. 修改HomeController的index方法

确保每次访问/home都传递用户数据:

public function index()
{
    $userDataa = auth()->user();
    return view('home', compact('userDataa'));
}

2. 修正LoginController的登录逻辑

不要直接返回视图,统一重定向到home路由:

public function login(Request $request)
{
    $input = $request->all();
    $this->validate($request,[
        'email'=>'required|email',
        'password'=>'required'
    ]);
    
    if(auth()->attempt(['email'=>$input['email'],'password'=>$input['password']]))
    {
        if(auth()->user()->is_admin == 1)
        {
            return redirect()->route('admin.home');
        }else{
            return redirect()->route('home');
        }
    }else{
        return redirect()->route('login')->with('error','يجب إدخال كل الحقول بشكل صحيح');
    }
}

方案二:直接在视图中使用认证助手(推荐)

无需传递变量,Laravel认证系统已提供全局访问当前用户的方式,直接在Home.blade.php中修改:

<h3>Welcome in your Area </h3>
{{ auth()->user()->name }}

简化后的LoginController:

public function login(Request $request)
{
    $input = $request->all();
    $this->validate($request,[
        'email'=>'required|email',
        'password'=>'required'
    ]);
    
    if(auth()->attempt(['email'=>$input['email'],'password'=>$input['password']]))
    {
        return auth()->user()->is_admin == 1 
            ? redirect()->route('admin.home') 
            : redirect()->route('home');
    }else{
        return redirect()->route('login')->with('error','يجب إدخال كل الحقول بشكل صحيح');
    }
}

HomeController保持原样:

public function index()
{
    return view('home');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:24:56