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

Laravel中如何在URL中传递每页显示的列表条数?

解决Laravel分页中通过URL参数指定每页条数的问题

1. 修正控制器代码

不需要额外写路由或者单独方法,直接在原有index方法里处理即可:

public function index()
{
    // 从URL查询参数获取per_page,未传参时默认用3
    $perPage = request()->get('per_page', 3);
    
    $listings = Listing::latest()
        ->filter(request(['tag', 'search']))
        ->paginate($perPage);
    
    // 让分页链接自动带上per_page参数,避免切换页码时丢失设置
    $listings->appends(['per_page' => $perPage]);
    
    return view('listings.index', compact('listings'));
}

2. 移除多余路由

你之前创建的Route::get('/per_page/{perPage}', ...)路由可以删掉,我们用查询参数(?per_page=5这种形式)更灵活,直接访问原列表页面并带上参数即可生效,比如/listings?per_page=5。

3. 视图无需修改

index.blade.php里的{{$listings->links()}}保持原样就行,上面的appends方法已经让分页链接自动带上per_page参数,点击分页按钮时URL会保留这个设置,不会重置回默认条数。

为什么之前的尝试没成功?

  • 直接换变量但没正确获取请求参数:你可能没从request里拿到per_page值,或者没设置默认值导致参数为空报错。
  • 额外路由没必要:路由参数(/per_page/3)和查询参数(?per_page=3)是两种传参方式,这里用查询参数不需要改动原有路由结构,更适配分页场景。

内容的提问来源于stack exchange,提问作者Xenochrist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:10:32