通过ID创建详情页时出现Undefined variable $data错误求助
解决Laravel中Undefined variable $data错误(按ID展示详情页)
你遇到的Undefined variable $data错误,核心原因是列表页与详情页复用了同一个视图,但列表页未传递$data变量,同时链接的相对路径也可能导致路由跳转异常。以下是具体解决方案:
1. 拆分列表页与详情页视图
不要用同一个daftar_mahasiswa.blade.php同时承担列表展示和详情展示的功能,新建独立视图:
- 保留
daftar_mahasiswa.blade.php作为列表页,用于展示所有学生数据 - 新建
mahasiswa_detail.blade.php作为详情页,用于展示单条学生数据
2. 修改控制器代码
让show方法返回新建的详情视图:
public function show($id) { return view('mahasiswa_detail', [ 'data' => Mahasiswa::findOrFail($id), ]); }
补充列表页的index方法(需在控制器中新增):
public function index() { return view('daftar_mahasiswa', [ 'mahasiswas' => Mahasiswa::all() ]); }
3. 优化路由(添加命名路由)
给路由添加名称,避免手动拼接URL的错误:
// 列表页路由 Route::get('/daftar_mahasiswa', [MahasiswaController::class, 'index']); // 详情页路由(添加命名) Route::get('/daftar_mahasiswa/{id}', [MahasiswaController::class, 'show'])->name('mahasiswa.show');
4. 修正列表页的详情链接
在daftar_mahasiswa.blade.php中,使用route()助手生成正确的详情链接:
{{-- 循环展示所有学生数据 --}} @foreach($mahasiswas as $mahasiswa) <button class="action" style="background: #3C91E6"> <a href="{{ route('mahasiswa.show', $mahasiswa->id) }}" style="color: inherit"> <i class='bx bxs-detail'></i> Detail </a> </button> @endforeach
5. 详情页视图示例(mahasiswa_detail.blade.php)
在详情页中可正常使用$data变量展示内容:
<h2>学生详情</h2> <div> <p>ID: {{ $data->id }}</p> <p>姓名: {{ $data->name }}</p> {{-- 根据你的数据表结构补充其他字段 --}} </div>
内容的提问来源于stack exchange,提问作者ieulan
相关产品推荐
相关产品推荐

