Yii2 分页 Pagination 自定义 page 参数,URL 参数拼接异常解决办法

轻浩大大_4633

轻浩大大_4633

2026-10-07

559人浏览

原创

yii2分页需自定义pageparam(如'p')并配置params保留业务参数,启用美化url时须显式指定route,ajax分页应动态构造含新页码参数的url。

yii2 分页 pagination 自定义 page 参数,url 参数拼接异常解决办法

Yii2 默认从 $_GET['page'] 读取页码,但实际项目中常需改用其他参数名(如 p、page_no 或带前缀的 list[page]),否则 URL 拼接会出错——比如点击分页链接后业务参数丢失、页码不生效,或生成类似 ?page=2&page=3 的重复参数。

修改 page 参数名:用 pageParam 配置

在创建 Pagination 实例时,直接指定 pageParam 即可:

  • 'pageParam' => 'p' → URL 变为 ?p=2
  • 'pageParam' => 'page_no' → URL 变为 ?page_no=2
  • 'pageParam' => 'list[page]' → URL 变为 ?list[page]=2(自动编码)

这个配置会同时影响:页码解析(读哪个键)、URL 生成(LinkPager 输出的链接)、跳转逻辑(AJAX 请求目标地址)。

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载

保留非分页参数:显式透传 params

仅设 pageParam 不够。LinkPager 默认只保留 page 和 per-page 类参数,其他如 category=3、q=abc 会被丢弃。解决方法是在 Pagination 配置中加入 params 数组:

  • 安全写法:逐个指定需保留的键,例如 'params' => ['category', 'q', 'status']
  • 更稳妥:取值时用 Yii::$app->request->get() 并过滤,如 'params' => array_filter(['category' => Yii::$app->request->get('category'), 'q' => Yii::$app->request->get('q')])
  • 注意:不要直接写 'params' => $_GET,防止敏感参数(如 token、debug)泄露

启用 URL 美化时 route 必须写全

如果开启 enablePrettyUrl,LinkPager 生成的链接依赖路由信息。若未显式指定 route,它可能拼出错误路径(如跳转到 /index.php?r=site/index 而非 /site/index)。

  • 在 LinkPager::widget() 中补上 'route' => 'article/index'
  • 若使用 ActiveDataProvider,则在 pagination 配置里加:'route' => 'article/index'
  • route 值必须与当前请求的实际路由一致,不能省略控制器名

AJAX 分页时 href 解析要兼容新参数名

自定义 pageParam 后,原生 AJAX 代码中 $(this).attr('href') 取到的仍是含 page=2 的链接,导致请求失败。应改用 JS 动态构造 URL:

  • 提取当前 URL,用正则替换或 URL 对象更新 pageParam 对应的参数值
  • 或统一用 Url::to() 在服务端预生成带全部参数的 AJAX 地址,再传给 JS
  • 推荐做法:在视图中用 data-url-base="= Url::to(['article/index'], true) ?>",JS 中拼接 base + '?p=' + pageNum + '&category=3'

相关专题

更多
PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2025.09.04

2930

22

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

80

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习

Yii2框架基础视频教程
Yii2框架基础视频教程

共22课时 | 2.8万人学习