调用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());
}
}效果图:
有什么不好的地方还请大神指教。
最佳答案