TP5分页简单重写实现自定义样式

浏览:10839 发布日期:2016/09/26 分类:ThinkPHP5专区 关键字: 技术交流
之前用自带的分页感觉样式不好控制,最主要是没有控制页码数量的方法(如果有,我是没有看到这个。),所以就自己写了个简单的。重要的参数TP5已经给出来了,在这里我只需要两个参数即可实现分页功能。
调用TP5的分页你会看到它是用render方法渲染到模板实现分页。这个方法是在Paginator这个文件里,再慢慢看,里面有两个方法是我重构分页所需要的方法
currentPage方法是得到当前页。
lastPage方法是得到总页数。
这两个参数是实现分页的必要参数。下面我通过简单几行代码就可以了。
直接看代码:1.查询数据并渲染到模板
 //在控制器查询文章表,每页10条。
  $data=Db::table('tp_article')->paginate(10);
//实例化自己写的分页类
  $page=new Fpage($data->currentPage(),$data->lastPage());
//渲染到模板的分页样式
   $this->assign('page', $pages->pagelist());
//渲染到模板的文章数据
   $this->assign('data' ,$data);
2.这个分页类很简单,可以自己写,下面是我写的。
<?php
namespace app\index\Controller;

class Fpage{
    private $page;//当前页
    private $pagenum;//总页数

    public function __construct($page,$pagenum){
        $this->page=$page;
        $this->pagenum=$pagenum;
    }
    //首页
    private function first(){

        if($this->page==1){
            @$html.='<span>1</span>';
        }else{
            @$html.='<a href="/?page=1">1...</a>';
        }
        return $html;

    }
    //上一页
    private function prev(){

        if($this->page==1){
            @$html.='<span>上一页</span>';
        }else{
            @$html.='<a href="/?page='.($this->page-1).'">上一页</a>';
        }
        return $html;
    }
    //下一页
    private function next(){

        if($this->page == $this->pagenum){
            @$html.='<span>下一页</span>';
        }else{
            @$html.='<a href="/?page='.($this->page+1).'">下一页</a>';
        }

        return $html;

    }
    //尾页
    private function last(){

        if($this->page==$this->pagenum){
            @$html.='<span>'.$this->pagenum.'</span>';
        }else{
            @$html.='<a href="/?page='.($this->pagenum).'">...'.$this->pagenum.'</a>';
        }
        return $html;
    }
    //当前页
    private function currentpage(){
        return '<spanc>第'.$this->page.'页</spanc>';
    }
    public function pagelist(){
        return array('first'=>$this->first(),'prev'=>$this->prev(),'aaa'=>$this->currentpage(),'next'=>$this->next(),'last'=>$this->last());
    }

}
效果图:


有什么不好的地方还请大神指教。
最佳答案
评论( 相关
后面还有条评论,点击查看>>