You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:33:30