如何在CodeIgniter4中通过自定义库扩展PagerRenderer新增分页计数方法
你的扩展方向是正确的,只需要调整几个问题和配置就可以正常使用:
现有代码需要修正的问题
- 自定义类的构造方法多余
你写的__construct空参调用父类构造会报错,原生PagerRenderer的构造方法需要接收分页相关参数,不需要你手动声明构造方法,直接删除你自定义Pagination类中的__construct方法即可,继承时会自动调用父类构造。 - 视图头部的use语句语法错误
你写的use App\Libraries\Pagination\末尾多了反斜杠,而且不需要加这个use语句,配置完成后框架传入视图的$pager实例本身就是你自定义类的实例,可以直接调用新增方法。
需要添加的配置
CodeIgniter4的分页配置本身支持自定义渲染器类,不需要修改核心代码也不需要重写服务,直接修改配置即可:
打开app/Config/Pager.php配置文件,找到$renderer配置项,将默认值替换为你自定义的类:
// 原配置 // public $renderer = \CodeIgniter\Pager\PagerRenderer::class; // 修改为 public $renderer = \App\Libraries\Pagination::class;
修改完成后框架生成的所有分页渲染器实例都会使用你自定义的Pagination类,在视图中直接调用你新增的方法即可。
额外注意
你当前视图里的方法调用有逻辑错位问题,比如上一页链接的data-page调用的是getLastPageCounter(),最后一页链接的data-page调用的是getPreviousPageCounter(),这部分属于业务逻辑错误,你根据自己的需求调整对应方法调用即可。
内容的提问来源于stack exchange,提问作者ven
相关产品推荐
相关产品推荐

