跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

ThinkPHP怎样配置分页显示参数_分页显示参数配置【教程】

ThinkPHP分页链接异常的五种配置方法:一、paginate()传配置数组;二、全局paginate.php配置;三、appends()追加固定参数;四、setTemplate()动态指定模板;五、按驱动类设置文案等选项。

如果您在 ThinkPHP 中调用paginate()方法后,分页链接未按预期显示页码、每页条数或查询参数丢失,则很可能是分页配置参数未正确设置或未覆盖默认行为。以下是多种配置分页显示参数的具体方法:

一、在 paginate() 调用时传入配置数组

该方式适用于单次分页请求的精细化控制,可动态指定页码、每页数量、URL 参数保留等关键行为。所有配置项均通过第三个参数(关联数组)传入,避免依赖全局默认值。

1、在控制器中使用模型或 Db 门面调用 paginate(),显式传入配置数组:

2、设置

page键为当前页码(支持从 input 或 request 获取);

立即学习“PHP免费学习笔记(深入)

”;

3、设置

list_rows键为每页记录数(若已传第一个参数,则此项可省略,但显式声明更清晰);

4、通过

query键透传当前请求的所有 GET 参数(如搜索关键词、分类 ID),防止翻页后条件丢失;

5、可选添加

fragment键指定锚点(如 'content'),使分页跳转后自动滚动至页面指定区域。

二、全局配置 paginate.

php文件该方式适用于全站统一分页行为,避免在每个控制器重复书写相同配置。ThinkPHP 6.1+ 支持在config/paginate.php中定义默认参数,框架会自动加载并应用。

1、在项目根目录的

config/paginate.php文件中返回配置数组;

2、将

'page' => 'p'写入配置,使框架识别 URL 中p=2而非默认的page=2;

3、将

'list_rows' => 20设为默认每页条数;

4、设置

'query' => [](空数组)可禁用自动继承 URL 参数,需手动控制;

5、若使用自定义分页模板路径,可在该文件中配置

'template' => 'common/paginate'。

三、使用 appends() 方法追加固定查询参数

当需要在所有分页链接中强制携带某些固定参数(如站点 ID、语言 code、模块标识),而这些参数不随用户操作变化时,appends() 提供链式、轻量级的注入方式,优先级高于 query 配置。

1、在 paginate() 返回的分页对象上调用appends()方法;

2、传入关联数组,例如

['site_id' => 1, 'lang' => 'zh-cn'];

3、该操作会将参数附加到所有分页链接的 query string 末尾;

4、若同时使用

query配置和appends(),后者参数会覆盖前者同名键;

5、注意:appends() 必须在 assign 到模板前调用,否则视图中 render() 输出的链接不含新增参数。

四、通过 setTemplate() 动态指定分页模板

当项目存在多套主题或需根据场景切换分页样式(如后台简洁版 vs 前台 Bootstrap 版),setTemplate() 允许在运行时覆盖模板路径,无需修改配置文件或复制文件结构。

1、获取 paginate() 返回的对象后,立即调用setTemplate()方法;

2、传入相对视图路径字符串,例如

'admin/paginate_simple';

3、该路径将被解析为

view/admin/paginate_simple.html;

4、确保目标模板文件存在且包含有效的分页逻辑(如遍历

$page->render()所需变量);

5、此方法在 TP6.3+ 中可用,低版本需改用全局 template 配置或继承驱动类。

五、修改分页驱动类配置项

分页 HTML 的文案(如“上一页”“下一页”)、按钮符号、是否显示总页数等,由所选分页驱动类决定。不同驱动(如 bootstrap、bootstrap4)对应不同配置键名,错误匹配将导致设置无效。

1、先确认当前驱动类型:

config('paginate.type')返回值;

2、若为

'bootstrap',使用'last_page' => '上一页'和'next_page' => '下一页';

3、若为

'bootstrap4',改用'prev_text' => '‹'和'next_text' => '›';

4、中文文案需确保模板中未硬编码文字,否则配置项不起作用;

5、在 paginate() 配置数组中直接写入上述键值对,或在 config/paginate.php 中统一设置。

相关文章