当前位置:首页 > CMS教程 > Thinkphp > 列表

tp5框架内使用tp3.2分页的方法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-20 20:24:23 浏览: 评论:0 

这篇文章主要介绍了tp5框架内使用tp3.2分页的方法,结合实例形式分析了thinkPHP5框架使用thinkPHP3.2版本中分页的具体操作步骤与相关实现技巧,需要的朋友可以参考下。

本文实例讲述了tp5框架内使用tp3.2分页的方法,分享给大家供大家参考,具体如下:

tp5内使用tp3.2分页

由于百度上面太多坑,所以自己拿来去改了一下

下面是完全可行的操作

tp3.2分页 tp5框架分页

首先吧tp3.2的分页复制出来,拿到tp5 extend文件夹下面的org里面,把tp3.2的分页名称改为Page.php

然后改一下里面的代码

下面是改过后的代码

  1. <?php 
  2. namespace org;//命名规范 
  3. class Page{ 
  4.   public $firstRow// 起始行数 
  5.   public $listRows// 列表每页显示行数 
  6.   public $parameter// 分页跳转时要带的参数 
  7.   public $totalRows// 总行数 
  8.   public $totalPages// 分页总页面数 
  9.   public $rollPage  = 7;// 分页栏每页显示的页数 
  10.   public $lastSuffix = false; // 最后一页是否显示总页数 
  11.   private $p    = 'p'//分页参数名 
  12.   private $url   = ''//当前链接URL 
  13.   private $nowPage = 1; 
  14.   // 分页显示定制 
  15.   private $config = array
  16.     'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>'
  17.     'prev'  => '<<'
  18.     'next'  => '>>'
  19.     'first' => '1...'
  20.     'last'  => '...%TOTAL_PAGE%'
  21.     'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%'
  22.   ); 
  23.   /** 
  24.    * 架构函数 
  25.    * @param array $totalRows 总的记录数 
  26.    * @param array $listRows 每页显示记录数 
  27.    * @param array $parameter 分页跳转的参数 
  28.    */ 
  29.   public function __construct($totalRows$listRows=20, $parameter = array()) { 
  30.     config('var_page') && $this->p = config('var_page'); //设置分页参数名称 
  31.     /* 基础设置 */ 
  32.     $this->totalRows = $totalRows//设置总记录数 
  33.     $this->listRows  = $listRows//设置每页显示行数 
  34.     $this->parameter = emptyempty($parameter) ? input('param.'):$parameter;//因为tp5无法直接获取到$_GET,所以这里直接拿tp5的函数input('param.'),下面的一样 
  35.     $this->nowPage  = emptyempty(input('param.p')) ? 1 : intval(input('param.p')); 
  36.     $this->nowPage  = $this->nowPage>0 ? $this->nowPage : 1; 
  37.     $this->firstRow  = $this->listRows * ($this->nowPage - 1); 
  38.   } 
  39.   /** 
  40.    * 定制分页链接设置 
  41.    * @param string $name 设置名称 
  42.    * @param string $value 设置值 
  43.    */ 
  44.   public function setConfig($name,$value) { 
  45.     if(isset($this->config[$name])) { 
  46.       $this->config[$name] = $value
  47.     } 
  48.   } 
  49.   /** 
  50.    * 生成链接URL 
  51.    * @param integer $page 页码 
  52.    * @return string 
  53.    */ 
  54.   private function url($page){ 
  55.     $ispage = str_replace(urlencode('[PAGE]'), $page$this->url); 
  56.     return $ispage
  57.   } 
  58.   /** 
  59.    * 组装分页链接 
  60.    * @return string 
  61.    */ 
  62.   public function show() { 
  63.     if(0 == $this->totalRows) return ''
  64.     /* 生成URL */ 
  65.     $this->parameter[$this->p] = '[PAGE]'
  66.     $this->url = url(request()->action(), $this->parameter);//生成url改成tp5获取当前action的 
  67.     /* 计算分页信息 */ 
  68.     $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数 
  69.     if(!emptyempty($this->totalPages) && $this->nowPage > $this->totalPages) { 
  70.       $this->nowPage = $this->totalPages; 
  71.     } 
  72.     /* 计算分页临时变量 */ 
  73.     $now_cool_page   = $this->rollPage/2; 
  74.     $now_cool_page_ceil = ceil($now_cool_page); 
  75.     $this->lastSuffix && $this->config['last'] = $this->totalPages; 
  76.     //上一页 
  77.     $up_row = $this->nowPage - 1; 
  78.     $up_page = $up_row > 0 ? '<a class="prev" href="' . $this->url($up_row) . '" rel="external nofollow" >' . $this->config['prev'] . '</a>' : ''
  79.     //下一页 
  80.     $down_row = $this->nowPage + 1; 
  81.     $down_page = ($down_row <= $this->totalPages) ? '<a class="next" href="' . $this->url($down_row) . '" rel="external nofollow" >' . $this->config['next'] . '</a>' : ''
  82.     //第一页 
  83.     $the_first = ''
  84.     if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){ 
  85.       $the_first = '<a class="first" href="' . $this->url(1) . '" rel="external nofollow" >' . $this->config['first'] . '</a>'
  86.     } 
  87.     //最后一页 
  88.     $the_end = ''
  89.     if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){ 
  90.       $the_end = '<a class="end" href="' . $this->url($this->totalPages) . '" rel="external nofollow" >' . $this->config['last'] . '</a>'
  91.     } 
  92.     //数字连接 
  93.     $link_page = ""
  94.     for($i = 1; $i <= $this->rollPage; $i++){ 
  95.       if(($this->nowPage - $now_cool_page) <= 0 ){ 
  96.         $page = $i
  97.       }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){ 
  98.         $page = $this->totalPages - $this->rollPage + $i
  99.       }else
  100.         $page = $this->nowPage - $now_cool_page_ceil + $i
  101.       } 
  102.       if($page > 0 && $page != $this->nowPage){ 
  103.         if($page <= $this->totalPages){ 
  104.           $link_page .= '<a class="num" href="' . $this->url($page) . '" rel="external nofollow" >' . $page . '</a>'
  105.         }else
  106.           break
  107.         } 
  108.       }else
  109.         if($page > 0 && $this->totalPages != 1){ 
  110.           $link_page .= '<span class="current">' . $page . '</span>'
  111.         } 
  112.       } 
  113.     } 
  114.     //替换分页内容 
  115.     $page_str = str_replace
  116.       array('%HEADER%''%NOW_PAGE%''%UP_PAGE%''%DOWN_PAGE%''%FIRST%''%LINK_PAGE%''%END%''%TOTAL_ROW%''%TOTAL_PAGE%'), 
  117.       array($this->config['header'], $this->nowPage, $up_page$down_page$the_first$link_page$the_end$this->totalRows, $this->totalPages), 
  118.       $this->config['theme']); 
  119.     return "<div>{$page_str}</div>"
  120.   } 

接着是获取数据的代码

首先要use

tp3.2分页 tp5框架分页

然后就可以直接根据tp3那样写了

tp3.2分页 tp5框架分页

样式完全可以自定义

tp3.2分页 tp5框架分页

Tags: tp3 2分页 tp5框架分页

分享到: