关于ThinkPHP分页操作

Posted on 2013-07-31 11:12  php小弟  阅读(490)  评论(0)    收藏  举报

TP分页我目前遇到的有两种情况,这个和model有关其一:$form = D('user') 如果这么实例化的可以直接采用如下的方式:

   import('ORG.Util.Page');// 导入分页类
    $count      = $Data->count();// 查询满足要求的总记录数 $map表示查询条件
 //dump($count);
    $Page       = new Page($count);// 实例化分页类 传入总记录数
    $show       = $Page->show();// 分页显示输出

    $this->assign('page',$show);// 赋值分页输出

页面中采用{$page}进行分页操作。

其二:$form = new Model();如果是这么实例化的,需要采用如下方式进行:

在action中查询结果之后需要添加的代码:

$param = array(
            'result'=>$list,            //分页用的数组或sql
            'listvar'=>'list1',            //分页循环变量
            'listRows'=>21,            //每页记录数
            'parameter'=>'search=key&name=thinkphp',//url分页后继续带的参数
            'target'=>'content',    //ajax更新内容的容器id,不带#
            'pagesId'=>'page',        //分页后页的容器id不带# target和pagesId同时定义才Ajax分页
            'template'=>'Index:ajaxlist',//ajax更新模板
        );
        $this->page($param);
        $this->display();

action中调用的一个方法的具体代码:

 public function page($param) {
        extract($param);
         import('ORG.Util.Page');
        //总记录数
        $flag = is_string($result);
        $listvar = $listvar ? $listvar : 'list';
        $listRows = $listRows? $listRows : 21;
        if ($flag)
            $totalRows = M()->table($result . ' a')->count();
        else
            $totalRows = ($result) ? count($result) : 1;
        //创建分页对象
        if ($target && $pagesId)
            $p = new Page($totalRows, $listRows, $parameter, $url,$target, $pagesId);
        else
            $p = new Page($totalRows, $listRows, $parameter,$url);
        //抽取数据
        if ($flag) {
            $result .= " LIMIT {$p->firstRow},{$p->listRows}";
            $voList = M()->query($result);
        } else {
            $voList = array_slice($result, $p->firstRow, $p->listRows);
        }
        $pages = C('PAGE');//要ajax分页配置PAGE中必须theme带%ajax%,其他字符串替换统一在配置文件中设置,
        //可以使用该方法前用C临时改变配置
        foreach ($pages as $key => $value) {
            $p->setConfig($key, $value); // 'theme'=>'%upPage% %linkPage% %downPage% %ajax%'; 要带 %ajax%
        }
        //分页显示
        $page = $p->show();
        //模板赋值
        $this->assign($listvar, $voList);
        $this->assign("page", $page);
        if ($this->isAjax()) {//判断ajax请求
            layout(false);
            $template = (!$template) ? 'ajaxlist' : $template;
            exit($this->fetch($template));
        }
        return $voList;
   
    }  

页面中采用{$page}进行分页输出。

以上是关于利用ThinkPHP已经封装好的分页类进行的分页操作,是我最开始接触TP做项目中遇到的两个方法。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3