首页 > 代码库 > thinkphp分页时保持查询条件
thinkphp分页时保持查询条件
thinkphp 查询数据时需要分页显示时,会出现只有第1页是按查询条件查到的数据,而其他页面都恢复了,我们想要的结果却是:在翻页时,查询条件保持不变。
原因是:在分页跳转的时候,没有将查询条件作为分页参数传递到下一页。原来翻页的时候,存储在REQUEST变量中的参数并未被传递到下一页,因为表单的 method = “post”,而点击进入下一页时,很明显form表单被重置了,所以打印REQUEST变量也是空的。
thinkphp RBAC的示例代码中给出了:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $p = new Page($count, $listRows); //分页查询数据 $voList = $model->where($map)->order("`" . $order . "` " . $sort)->limit($p->firstRow . ‘,‘ . $p->listRows)->findAll(); //echo $model->getlastsql(); //分页跳转的时候保证查询条件(其实重点不在这里!) foreach ($map as $key => $val) { if (!is_array($val)) { $p->parameter .= "$key=" . urlencode($val) . "&"; } } //分页显示 $page = $p->show(); |
试过之后,发现虽然试图在URL参数中加入查询条件,但是显示的结果仍然如初,因为翻到第二页时,查询条件的表单数据已经丢失了。
查看ORG.page类,发现其parameter属性确实是由用户表单输入的查询条件和系统内定的分页参数p经过urlencode最后附加到页码跳转的链接URL上。尽管thinkphp官方说,会优先去POST,再去GET变量,但是结果却并非想象中那么美好。
在模版中,将查询条件的表单提交方式,由POST方式 改为 GET 方式 ,即:method = “get”,问题暂时解决了。
待续…
2013.11.27
今天有了一些新的想法。不知道这种方式好不好。
1、在使用了条件查询时,将查询条件发送到action,
2、action在调用view显示页面时,再把查询条件字段写到页面上。
3、重复1操作。
thinkphp
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。