tp分页的实现(如何随心所欲生成页码的url参数)

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);

以上就是我的一点心得,实现以后看似不难,但确确实实自己摸索出来的。

展开阅读全文

没有更多推荐了,返回首页