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

Laravel 5.7分页onEachSide设置未生效问题排查与解决

解决Laravel 5.7分页onEachSide设置不生效的问题

看起来你遇到的是分页配置与视图渲染不匹配的问题,我来帮你一步步排查修复:

第一步:验证控制器配置是否正确传递到视图

首先确认onEachSide(2)的设置确实传递到了视图层。在你的分页代码附近,临时添加一行测试代码:

<p>当前onEachSide值:{{ $materials->onEachSide() }}</p>
{{ $materials->links() }}

访问页面后,如果显示的是2,说明控制器的配置没问题,问题出在分页视图的渲染逻辑上;如果不是2,需要检查控制器里是否有其他地方修改了$materials变量(从你的代码来看应该没有,但还是确认下更稳妥)。

第二步:修复分页视图的渲染逻辑

Laravel 5.7默认使用Bootstrap 4的分页视图,但如果项目里的分页视图是自定义的,或者是旧版本遗留的,可能没有正确使用onEachSide()的值来控制显示的页码数量。

方法1:重新发布官方默认分页视图

运行Artisan命令重新生成官方的分页视图,确保逻辑是最新的:

php artisan vendor:publish --tag=laravel-pagination

执行后,你会在resources/views/vendor/pagination/目录下看到官方的分页视图文件(默认是bootstrap-4.blade.php),这个文件已经正确实现了onEachSide()的逻辑,会严格遵循你设置的数值控制两侧显示的页码数。

方法2:修改自定义分页视图(如果有)

如果你用了自定义的分页视图文件,打开它找到页码循环的部分,把硬编码的两侧页码数量替换为$paginator->onEachSide()。比如原来的代码可能是:

@for ($i = 1; $i <= $paginator->lastPage(); $i++)
    @if ($i >= $paginator->currentPage() - 3 && $i <= $paginator->currentPage() + 3)
        <!-- 页码渲染代码 -->
    @endif
@endfor

改成:

@for ($i = 1; $i <= $paginator->lastPage(); $i++)
    @if ($i >= $paginator->currentPage() - $paginator->onEachSide() && $i <= $paginator->currentPage() + $paginator->onEachSide())
        <!-- 页码渲染代码 -->
    @endif
@endfor

修改后,视图就会遵循你在控制器里设置的onEachSide(2)配置了。

第三步:确认响应式布局

官方的Bootstrap 4分页视图本身是响应式的,会在小屏设备上自动调整布局,不会出现溢出问题。如果你用的是自定义视图,要确保添加了响应式的CSS类(比如Bootstrap的pagination类),或者使用flex布局来适配小屏设备。

完成以上步骤后,你的分页应该会正确显示当前页两侧各2个页码,小屏设备的布局溢出问题也会得到解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:57:36