tp3.2.3保持搜索条件的分页

本文介绍了一种解决ThinkPHP框架中使用自定义分页类时搜索条件在翻页过程中丢失的方法。通过将搜索条件从POST改为GET提交,并在分页构造时加入这些条件,确保了翻页时搜索条件的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

      之前用tp做顶部搜索,做完之后也没注意那么多。后来测试的时候才发现,点击分页的下一页,我们之前的搜索条件就没用了。。这就有点不合适了,因此开始踩坑。

      我这里用的是Post方式提交的搜索条件。查看开发手册,发现tp手册中提供了解决方案:

链接:https://www.kancloud.cn/manual/thinkphp/1875

这里写图片描述

      手册上写的是很清楚,但是在我这里还是行不通。可能是因为我用的是自定义分页类的原因吧。无奈之下改成了GET方式提交搜索条件。

二、步骤

1、首先贴出我的分页方法。这个方法是写在Common目录下的function.php中,作为公用的分页方法。

/**
 *
 * @param $count 要分页的总记录数
 * @param int $pagesize 每页查询条数
 * @param  $where  传递过来的查询条件
 * @return \Think\Page
 */
function getNewPage($count, $pagesize,$where) {
    $p = new Think\Page($count, $pagesize);
    $p->setConfig('header', '<li class="rows">共<b>%TOTAL_ROW%</b>条记录 第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</li>');
    $p->setConfig('prev', '上一页');
    $p->setConfig('next', '下一页');
    $p->setConfig('last', '末页');
    $p->setConfig('first', '首页');
    $p->setConfig('theme', '%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%');
    $p->lastSuffix = false;//最后一页不显示为总页数
    return $p;

      这里不用tp自带分页的原因是,自带的分页实在太丑了。。有点不忍直视,所以就改了一下样式,分页方法还是一样的。

2、GET表单提交条件。

1)我之前做的搜索条件是POST方式提交的,链接如下:

http://blog.youkuaiyun.com/ljfphp/article/details/79117813

2)该用GET方法之后,只是获取参数的方式由 POST P O S T 变 成 了 _GET,条件部分,我们还是根据条件组成了数组。

//$where即为搜索条件
  if($openid){
        $where['openid'] = ['EQ', $openid];
      }
      if($nickname){
        $where['nickname'] = ['EQ', $nickname];
      }

3)如果想要点击分页的其他页,保持我们的搜索条件,那我们就需要把这个搜索条件$where传入到分页方法中:

//传入$where
  $p = getpage($count,$page,$where);
//在分页方法中加上一段代码:
 $p = new Think\Page($count, $pagesize);
  foreach($where as $key=>$val) {
    $p->parameter  .=  "$key=".urlencode($val).'&';
}

      这里,我们相当于把搜索条件的数组传入到分页方法,然后循环拼接搜索条件中的条件。这样就能实现,我们点击分页的时候,会自动带上我们的搜索条件。

例如:
这里写图片描述

点击第二页,顶部的url会自动带上搜索条件。这样,分页就成功保持住了搜索条件了。

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值