|  RSS订阅  |  加入收藏

TP5中paginate方法丢失url参数的问题

paginate方法提供额外的query参数用于分页输出时保留参数。query支持数组配置多个参数。
摘要

一个简单的应用场景。现在需要在后台对用户产品数据进行搜索,可以对产品名称使用模糊检索,也可以使用产品类别进行分类搜索。因为搜索条件是两个表单项,所以简单了区分搜索条件,增加一个radio字段用来判断用户输入的是什么数据,从而执行不同的sql语句。



场景复现

假定radio字段为way,产品名称为product_name,产品类别为为type_id。设定way等于1执行产品名称模糊查询。否则执行类别查询。用变量$data接收表单数据$data=input('param.');。如果paginate方法只使用每页几条的单一参数,代码如下:

未标题-11.jpg

通过两个查询,可以分别按要求查出所需数据。但是问题出现了,当点击页码翻页时候,程序报错,提示未定义数组索引: way。地址栏信息只有默认的翻页参数?page=2

问题原因及解决办法

其实原因很简单,就是当翻页的时候,因为通过post接收的way参数丢失了。thinkPHP官方为paginate方法提供了额外的query参数,用来实现翻页地址参数保留。

thinkPHP手册提供的所有参数:

主要的分页参数如下: 参数
list_rows 每页数量
page 当前页
path url路径
query url额外参数
fragment url锚点
var_page 分页变量
type 分页类名

手册说明并不是很详细,看paginate类源码可以看到query参数支持数组。具体使用直接贴代码

未标题-12.jpg

通过添加query参数后,再次点击页码翻页,就不会报错了,再看地址栏就会多出参数way。当然还有其它方法可以解决这个额外参数的问题,只是个人觉得query参数是最方便的了。

打赏
  PHP    ThinkPHP    
转载请注明出处,未经许可禁止商用!
发表评论
*依据《网络安全法》规定,您需实名认证后才能评论!