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

通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:13:16