tp分页的实现(如何随心所欲生成页码的url参数)
tp发展到今天,已经十分完善。“常用必有开源“,是编程必须具备的思想之一。
tp框架中的类为Page,因为基础的控制器已经集成了这个类,所以可以直接使用。
- 确定分页总数和每页显示的数量
// $count 为总记录的条数,需要你自己生成(多为数据库的总记录)
// $pageSize 为每页显示的条数,这点可以自己定
$page = $this->page($count, $pageSize);
- 结合数据库的查询使用
$list = $model->where($map)
->limit($page->firstRow . ',' . $page->listRows)
->select();
// 模板赋值
$this->assign('page', $page->show());
// 模板输出
{$page}
精华所在
如果你以为这样,就是全部了,那就小瞧了这个功能了。仔细研究生成的url,你会发现url中自带了很多参数,这些参数都是自动获取的$_GET或者$_POST传递的变量。看似十分智能。ajaxj结合页面跳转都没问题。
笔者曾经需要用到一个功能,查询时根据Ajax进行提交,生成页码之后再根据url跳转页面查询,看似都没问题。但是尴尬在于,页面初始化时生成page生成的url除了本身自带的p参数,其他的都没有,这逻辑就乱了,怎么办呢?终于让小编想到了主意。
欺骗page类,自拟虚构$_GET或者$_POST
// 页面初始化时,url中没有任何参数
if (I('get.') && I('post.')) {
// 虚拟预定义变量
$_GET = [
// 具体的参数,结合自己的需求
'param1'=>'',
'param2'=>
];
}
$page = $this->page($count, $pageSize);
以上就是我的一点心得,实现以后看似不难,但确确实实自己摸索出来的。