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
相关产品推荐
相关产品推荐

