前言
TP6自带的分页类适合在多页面的刷新模式下使用,如果使用单页面模式,需要重新编写分页类。 预览图:
步骤
1.创建类:在app目录下新建common_class文件夹,新建Page.php文件
2.Page.php文件代码:
<?php
namespace app\common_class;
use think\facade\Db;
class Page
{
public $offset = 5;//每页条数
public $total;//信息总数
public $totalPage;//页数
public $nowPage;//当前页码
public $start;//limit起始
/*构造函数,声明当前页,设置limit起始页*/
public function __construct($nowPage) {
$this->nowPage = $nowPage;
$this->start = $this->offset * ($this->nowPage - 1);
}
/*分页数据集查询-需先创建article和class表*/
public function pageQuery()
{
$info = Db::name('article')->where('flag',1)
->alias('a')
->join('class c','a.class = c.id')
->field('a.id,a.title,a.date,c.name,c.father_id,c.father_name')
->limit($this->start,$this->offset)
->order('a.id','desc')
->select();
return $info;
}
/*分页视图显示*/
public function pageCount(){
$info = Db::name('article')->where('flag',1)->select();
//信息总数
$count = count($info);
$this->total = $count;
//总页数计算
$a = ceil($count/$this->offset);
$b = (int)$a;
$this->totalPage = $b;
$page_a = "";
$page_up = "<a id='page_list_up'>上一页</a>";
$page_down = "<a id='page_list_down'>下一页</a>";
if($this->totalPage < 11){
/*页数10以内,全部输出*/
for($i=1;$i<=$this->totalPage;$i++){
if($i == $this->nowPage){
$page_a = $page_a."<a class='page_list_active'>".$i."</a>";
}else{
$page_a = $page_a."<a class='page_list_normal'>".$i."</a>";
}
}
}else{
/*页数超过10,只输出10个*/
//当前页面>5
if($this->nowPage > 5){
//末尾页面的显示
if(($this->totalPage - $this->nowPage) <= 5){
for($i=$this->totalPage-9;$i<=$this->totalPage;$i++){
if($i == $this->nowPage){
$page_a = $page_a."<a class='page_list_active'>".$i."</a>";
}else{
$page_a = $page_a."<a class='page_list_normal'>".$i."</a>";
}
}
}else{
//非末尾页面
for($i=$this->nowPage-4;$i<=$this->nowPage+5;$i++){
if($i == $this->nowPage){
$page_a = $page_a."<a class='page_list_active'>".$i."</a>";
}else{
$page_a = $page_a."<a class='page_list_normal'>".$i."</a>";
}
}
}
}else{
//当前页面<5
for($i=1;$i<=10;$i++){
if($i == $this->nowPage){
$page_a = $page_a."<a class='page_list_active'>".$i."</a>";
}else{
$page_a = $page_a."<a class='page_list_normal'>".$i."</a>";
}
}
}
}
/* 添加上一页和下一页*/
if($this->nowPage == 1){
$page_a = $page_a.$page_down;
}elseif($this->nowPage == $this->totalPage){
$page_a = $page_up.$page_a;
}else{
$page_a = $page_up.$page_a.$page_down;
}
/* 返回最终html代码 */
return $page_a;
}
}
3.文章管理页面代码
<div class="content">
<div class="content_title">管理文章</div>
<div class="content_form">
<div class="article_title">
<div class="article_title_a">ID</div>
<div class="article_title_b">标题</div>
<div class="article_title_c">栏目</div>
<div class="article_title_d">修改时间</div>
<div class="article_title_e">操作</div>
</div>
{volist name="info" id="vo"}
<div class="article_row">
<div class="article_row_a">{$vo.id}</div>
<div class="article_row_b">{$vo.title}</div>
<div class="article_row_c">
{if $vo.father_name == 0}
{$vo.name}
{else/}
{$vo.father_name} > {$vo.name}
{/if}
</div>
<div class="article_row_d">{$vo.date}</div>
<div class="article_row_e">修改 | 删除</div>
</div>
{/volist}
</div>
<div id="fenye">
<input id="now_page" type="hidden" value="{$now_page}"/>
<span id="show_page_message">共{$totalpages}页,{$total}条信息。</span>
{$pagelist|raw}
</div>
</div>
<script>
$(".page_list_normal").click(function () {
let a = $(this).text();
$("#right_content").load('article_admin/page/' + a);
})
$("#page_list_up").click(function () {
let b = $("#now_page").val();
let b2 = Number(b)-1;
$("#right_content").load('article_admin/page/' + b2);
})
$("#page_list_down").click(function () {
let c = $("#now_page").val()
let c2 = Number(c)+1;
$("#right_content").load('article_admin/page/' + c2);
})
</script>
4.TP6控制器代码
<?php
use app\common_class\Page;//使用前先引入类
/*1.5 管理文章 */
public function article_admin()
{
session_safe();
$page = Request::param('page');
$page2 = (int)$page;
// 实例化分页类
$page = new Page($page2);
//初始化获得信息总数和页码
$pagelist = $page -> pageCount();
$total = $page -> total;
$totalpages = $page -> totalPage;
//获得当前页码数据集
$result = $page->pageQuery();
View::assign("now_page",$page2);
View::assign("total",$total);
View::assign("totalpages",$totalpages);
View::assign("info",$result);
View::assign("pagelist",$pagelist);
return View::fetch();
}