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

Laravel报错Undefined variable $trainee,配置齐全仍未解决求助

Laravel 未定义变量 $trainee 问题排查

错误信息

未定义变量 $trainee

视图代码

@extends('layouts.app')
@include('components.header')

@section('content')
<div class="rec container mx-auto ml-5 mb-10 p-4 shadow-lg w-1/2 h-100">
    <p>Name: {{ $trainee->name }}</p>      <!-- 错误所在行 -->
    <p>Student ID: {{ $trainee->trainee->student_id }}</p>
</div>
<div class="container mx-auto ml-5">
    @include('journal.overview')    
</div>
@endsection

控制器代码

public function traineeRecord($id)
{
    // 加载用户及其trainee关联关系
    $trainee = User::with('trainee')->findOrFail($id);

    // 将$trainee变量传递给视图
    return view('coordinator.trainee-records', compact('trainee'));
}

路由代码

Route::get('/trainee-records/{id}', [CoordinatorController::'traineeRecord'])
    ->name('coordinator.trainee-records');

排查要点

  • 路由语法错误:路由中控制器的写法有误,正确格式应为[CoordinatorController::class, 'traineeRecord'],缺少::class会导致路由无法绑定到正确的控制器方法,控制器代码根本没执行,自然传不到变量。
  • 视图加载顺序问题:@extends('layouts.app')必须是视图文件的第一行代码,@include('components.header')应该放到@section('content')内部或者父布局的指定区域,否则可能打乱视图渲染流程。
  • 视图文件匹配问题:确认resources/views/coordinator/trainee-records.blade.php文件存在,文件名、路径和控制器返回的视图名称完全一致(注意大小写,Linux环境下区分大小写)。
  • 请求有效性:访问的URL必须是/trainee-records/{id},且{id}对应的用户存在,否则findOrFail会直接抛出404异常,控制器不会执行到返回视图的步骤。
  • 变量传递方式测试:暂时替换compact('trainee')为->with('trainee', $trainee),验证变量是否能正常传递到视图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:32:44