Laravel分页功能异常求助:点击分页报错且样式失效(Bootstrap4)
解决Laravel + Bootstrap 4分页的两个问题:404错误和样式丢失
嘿,我刚踩过类似的坑,这就帮你拆解解决!你遇到的两个问题都是Laravel分页的常见小故障,咱们一步一步来搞定:
一、点击分页第2页出现NotFoundHttpException的原因和解决
这个错误基本是分页链接丢失搜索参数+路由类型不匹配导致的:
1. 先修正路由类型
如果你的路由定义成了POST,那分页生成的GET链接肯定会找不到对应路由(GET请求不匹配POST路由规则)。赶紧把路由改成GET:
// routes/web.php Route::get('/searchuser', [YourController::class, 'searchuser'])->name('searchuser');
搜索功能用GET更合理,既能保证分页请求正常,还能让用户收藏搜索链接。
2. 给分页追加搜索参数
Laravel默认分页链接只会携带page参数,你的搜索关键词searchuserr会直接丢失,导致第二页请求没有搜索条件,甚至路由匹配失败。修改控制器里的分页代码,用appends()方法把搜索参数带上:
public function searchuser(Request $req){ if($req->has('searchuserr')){ $data = User::where('name','like','%'.$req->input('searchuserr').'%') ->select('name','email','status', 'pp', 'gender') ->orderBy('name') ->paginate(4) // 追加所有查询参数(排除page,避免重复) ->appends($req->except('page')); return view('your-view-name', compact('data')); } // 没有搜索参数时的默认逻辑 return view('your-view-name', ['data' => collect()]); }
这样生成的分页链接就会变成?searchuserr=xxx&page=2,不会丢失搜索条件,自然就不会报404了。
二、分页纯数字无Bootstrap样式的解决
Laravel默认用的是Tailwind风格的分页视图,要切换到Bootstrap 4样式有两种简单方法:
方法1:全局配置(一劳永逸)
打开app/Providers/AppServiceProvider.php,在boot()方法里添加一行代码,全局启用Bootstrap分页:
use Illuminate\Pagination\Paginator; public function boot() { Paginator::useBootstrap(); }
之后所有分页都会自动渲染Bootstrap 4的样式。
方法2:单个视图指定
如果你只想在这个搜索页面用Bootstrap样式,直接在视图里指定分页视图即可:
{{-- 你的搜索结果视图文件 --}} {{ $data->links('pagination::bootstrap-4') }}
这样就会渲染出带Bootstrap样式的分页按钮,不再是光秃秃的数字了。
最后测试一下:点击第二页参数正常携带,路由能匹配,分页按钮也变成Bootstrap的样式啦!
内容的提问来源于stack exchange,提问作者Kenny Nataniel
相关产品推荐
相关产品推荐

