Laravel带{id}参数的详情页出现404页面未找到问题
解决Laravel详情页404错误的问题
嘿,我看你遇到的是路由路径不匹配导致的“page not found”错误,咱们来一步步排查解决:
核心问题:路由与请求URL不匹配
你页面里生成的锚点URL是localhost/pages/details/5,但你的路由定义的是/details/{id}——这就相当于你请求的是pages/details/5,但路由只监听/details/{id},自然找不到对应的处理逻辑。
两种修复方案选其一就行:
修改路由,加上
pages前缀
把路由改成和URL一致的路径:Route::get('/pages/details/{id}', 'SearchController@detailsget');修改锚点的URL生成,去掉
pages
调整HTML里的url()参数,让生成的URL匹配现有路由:<a href="{{ url('/details/'.$landmark->id) }}">{{$landmark->name}}</a>
额外需要检查的细节
- 先确认
Landmark模型能正常通过find($id)获取数据:可以在detailsget方法里加一行dd($landmarks);,访问详情页看是否能输出地标数据,如果是null,可能是ID不存在或者模型关联有问题。 - 检查视图文件是否存在:确保
resources/views/pages/details.blade.php这个文件确实存在,路径和名称都要对应上。 - 如果是Laravel 8+版本,路由的控制器写法要调整:
// 先引入控制器类 use App\Http\Controllers\SearchController; // 然后用数组形式指定控制器和方法 Route::get('/pages/details/{id}', [SearchController::class, 'detailsget']);
内容的提问来源于stack exchange,提问作者I Love Code
相关产品推荐
相关产品推荐

