一、背景
之前用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.csdn.net/ljfphp/article/details/79117813
2)该用GET方法之后,只是获取参数的方式由 _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