Laravel详情页指定数据不显示问题求助及解决方法咨询
Laravel 成员详情页无法显示指定数据问题排查与修复
核心问题梳理
当前存在三个关键错误导致详情页无法正常显示指定成员数据:
- 路由未定义参数,无法传递成员ID到控制器
- 控制器错误使用路由模型绑定,重复查询且参数传递错误
- 详情视图错误遍历单条数据,同时存在语法拼写错误
1. 修复路由配置
原路由未接收成员ID参数,导致控制器无法获取要查询的目标数据。修改路由,添加{anggota}参数以支持ID传递或路由模型绑定:
Route::get('member',[\App\Http\Controllers\User\UserController::class, 'anggota'])->name('member.anggota'); // 添加路由参数,确保ID能传递到控制器方法 Route::get('single-member/{anggota}',[\App\Http\Controllers\User\UserController::class, 'showmember'])->name('member.show');
2. 修复控制器逻辑
控制器中showmember方法已使用路由模型绑定(方法参数为Anggota $anggota),Laravel会自动根据路由参数查询对应模型实例,无需手动调用find。原代码中Anggota::find($anggota)是错误的,因为$anggota已经是模型实例而非ID值。修复后的代码:
public function anggota() { $members = Anggota::orderBy('name','ASC')->paginate(5); return view('user.member', ['members'=>$members]); } public function showmember(Anggota $anggota) { // 路由模型绑定已自动完成数据查询,直接传递到视图即可 return view('user.single-member', compact('anggota')); }
如果不需要路由模型绑定,也可以改为接收ID参数并手动查询(推荐用findOrFail,找不到数据时抛出404错误):
public function showmember($id) { $anggota = Anggota::findOrFail($id); return view('user.single-member', compact('anggota')); }
3. 修复详情视图代码
原视图存在三个错误:@extend拼写错误(应为@extends)、错误使用@foreach遍历单条数据、HTML标签嵌套错误。修复后的视图代码:
@extends('layouts.navbar') @section('content') <div class="container"> <div class="card"> <div class="card-header d-flex justify-content-between"> <a href="{{route('member.anggota')}}" class="btn btn-sm btn-dark">Kembali</a> </div> <div class="card-body"> <table class="table"> <tr> <th>Nama Lengkap :</th> <td>{{$anggota->name}}</td> </tr> <tr> <th>Tanggal Lahir :</th> <td>{{$anggota->tgl_lhr}}</td> </tr> <tr> <th>Alamat :</th> <td>{{$anggota->address}}</td> </tr> <tr> <th>Instagram :</th> <td>{{$anggota->ig}}</td> </tr> </table> </div> </div> </div> @endsection
内容的提问来源于stack exchange,提问作者Reza Rahmadika
相关产品推荐
相关产品推荐

