Laravel 10如何将分页从?page=2改为/page/2的美观形式?
实现Laravel分页URL从
?page=2改为/page/2的方案 1. 调整路由定义
给你的列表路由添加可选的数字类型page参数,示例:Route::get('/posts/{page?}', [PostController::class, 'index']) ->where('page', '[0-9]+') ->name('posts.index');{page?}表示该参数可选,where规则确保参数只能是数字。2. 控制器适配分页逻辑
在控制器方法里接收page参数,传给分页方法,并设置分页链接的基础路径:public function index($page = 1) { // 第四个参数指定当前页码为路由传入的$page $posts = Post::paginate(10, ['*'], 'page', $page); // 设置分页链接的基础路由,让分页器生成路由格式的URL $posts->setPath(route('posts.index')); return view('posts.index', compact('posts')); }如果用
simplePaginate,参数用法和paginate一致。3. 自定义分页视图(按需优化)
要是想全局统一分页链接样式,先发布Laravel自带的分页视图:php artisan vendor:publish --tag=laravel-pagination然后打开
resources/views/vendor/pagination下对应的视图文件(比如default.blade.php),把原来的{{ $paginator->url($page) }}替换成路由生成代码:{{ route('posts.index', ['page' => $page]) }}这样所有分页链接都会生成
/posts/2这类格式。4. 兜底处理默认页码
控制器里的$page = 1已经处理了用户直接访问/posts的情况,此时会自动加载第一页数据。
内容的提问来源于stack exchange,提问作者Watheq Alshowaiter
相关产品推荐
相关产品推荐

