Laravel实现仅展示ID/名称并点击跳转至详情页的需求
解决方案
1. 修复路由冲突问题
你当前两个路由指向同一地址且名称重复,会导致只有第一条路由生效。需要拆分列表页与详情页路由:
// 列表页路由 Route::get('/tenderview', 'TenderViewController@index')->name('tenderview.index'); // 详情页路由(带ID参数,支持路由模型绑定) Route::get('/tenderview/{kind}', 'TenderViewController@show')->name('tenderview.show');
2. 调整控制器逻辑
index方法负责获取列表数据并返回视图show方法负责接收ID参数,获取单条Kind模型详情
public function index() { // 获取Kind列表,按创建时间倒序分页(每页8条) $dataa = Kind::orderBy('created_at', 'DESC')->paginate(8); return view('tenderview', ['dataa' => $dataa]); } public function show(Kind $kind) { // 利用路由模型绑定自动获取对应ID的Kind实例 return view('tender-detail', ['kind' => $kind]); }
3. 修改列表视图(tenderview.blade.php)
将ID改为可点击链接,仅展示ID和名称:
@foreach($dataa as $dater) <h5 class="card-title"> <b> <!-- 生成跳转到详情页的链接 --> <a href="{{ route('tenderview.show', $dater) }}">{{ $dater->id }}</a> </b> </h5> <p><b>{{ $dater->name }}</b></p> @endforeach <!-- 渲染分页按钮 --> {{ $dataa->links() }}
4. 创建详情视图(tender-detail.blade.php)
在该视图中展示Kind模型的完整详情:
<h3>Kind详情</h3> <p>ID: {{ $kind->id }}</p> <p>名称: {{ $kind->name }}</p> <!-- 按需添加其他需要展示的字段 -->
核心说明
- 路由模型绑定:路由参数
{kind}会自动匹配对应ID的Kind实例,无需手动调用Kind::find($id) - 路由命名:使用不同名称避免冲突,同时方便视图中生成链接
- 分页:保留原有分页功能,通过
$dataa->links()快速渲染分页控件
内容的提问来源于stack exchange,提问作者Mohaila Tlaba
相关产品推荐
相关产品推荐

