前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TP5中paginate方法丢失url参数的问题

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

作者头像
世纪访客
发布2018-08-02 15:34:14
1K0
发布2018-08-02 15:34:14
举报
文章被收录于专栏:西枫里博客西枫里博客
...
...

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

场景复现

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

未标题-11.jpg
未标题-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
未标题-12.jpg

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景复现
  • 问题原因及解决办法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档