Laravel 9中如何带参数重定向到命名路由?
问题分析与解决建议
你这段代码的核心问题是循环重定向:路由/post/{id}指定调用postController的show方法,而show方法又直接重定向回这个路由,导致请求无限循环,自然无法正常运行。
修正方案(以显示帖子内容为例)
如果你的需求是展示对应ID的帖子内容,应该查询数据后返回视图,而不是重定向:
修正后的控制器代码
public function show($id){ // 假设帖子模型为Post,根据ID查询数据(找不到则返回404) $post = \App\Models\Post::findOrFail($id); // 返回视图并传递帖子数据 return view('post.show', compact('post')); }
路由代码保持不变
Route::get('/post/{id}', [postController::class, 'show'])->name('post');
额外注意事项
- 控制器类名建议遵循Laravel规范使用大驼峰格式(比如
PostController而非postController),避免类自动加载出错 - 若确实需要重定向,务必确保目标路由不是当前触发
show方法的路由,杜绝循环问题
内容的提问来源于stack exchange,提问作者lolich
相关产品推荐
相关产品推荐

