thinkPHP5框架分页样式类完整示例


Posted in PHP onSeptember 01, 2018

本文实例讲述了thinkPHP5分页样式类。分享给大家供大家参考,具体如下:

在配置文件中改路径

把这段代码放入extend文件下 可以在这个文件下创建个page文件

在分页的控制器方法中

->paginate(12,false,[ 'type'=> 'page\Page','var_page'=>'page']);
<?php
namespace page;
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: zhangyajun <448901948@qq.com>
// +----------------------------------------------------------------------
use think\Paginator;
class Page extends Paginator
{
  //首页
  protected function home() {
    if ($this->currentPage() > 1) {
      return "<a href='" . $this->url(1) . "' title='首页'>首页</a>";
    } else {
      return "<p>首页</p>";
    }
  }
  //上一页
  protected function prev() {
    if ($this->currentPage() > 1) {
      return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一页'>上一页</a>";
    } else {
      return "<p>上一页</p>";
    }
  }
  //下一页
  protected function next() {
    if ($this->hasMore) {
      return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一页'>下一页</a>";
    } else {
      return"<p>下一页</p>";
    }
  }
  //尾页
  protected function last() {
    if ($this->hasMore) {
      return "<a href='" . $this->url($this->lastPage) . "' title='尾页'>尾页</a>";
    } else {
      return "<p>尾页</p>";
    }
  }
  //统计信息
  protected function info(){
    return "<p class='pageRemark'>共<b>" . $this->lastPage .
      "</b>页<b>" . $this->total . "</b>条数据</p>";
  }
  /**
   * 页码按钮
   * @return string
   */
  protected function getLinks()
  {
    $block = [
      'first' => null,
      'slider' => null,
      'last'  => null
    ];
    $side  = 3;
    $window = $side * 2;
    if ($this->lastPage < $window + 6) {
      $block['first'] = $this->getUrlRange(1, $this->lastPage);
    } elseif ($this->currentPage <= $window) {
      $block['first'] = $this->getUrlRange(1, $window + 2);
      $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
    } elseif ($this->currentPage > ($this->lastPage - $window)) {
      $block['first'] = $this->getUrlRange(1, 2);
      $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
    } else {
      $block['first'] = $this->getUrlRange(1, 2);
      $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
      $block['last']  = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
    }
    $html = '';
    if (is_array($block['first'])) {
      $html .= $this->getUrlLinks($block['first']);
    }
    if (is_array($block['slider'])) {
      $html .= $this->getDots();
      $html .= $this->getUrlLinks($block['slider']);
    }
    if (is_array($block['last'])) {
      $html .= $this->getDots();
      $html .= $this->getUrlLinks($block['last']);
    }
    return $html;
  }
  /**
   * 渲染分页html
   * @return mixed
   */
  public function render()
  {
    if ($this->hasPages()) {
      if ($this->simple) {
        return sprintf(
          '%s<div class="pagination">%s %s %s</div>',
          $this->css(),
          $this->prev(),
          $this->getLinks(),
          $this->next()
        );
      } else {
        return sprintf(
          '%s<div class="pagination">%s %s %s %s %s %s</div>',
          $this->css(),
          $this->home(),
          $this->prev(),
          $this->getLinks(),
          $this->next(),
          $this->last(),
          $this->info()
        );
      }
    }
  }
  /**
   * 生成一个可点击的按钮
   *
   * @param string $url
   * @param int  $page
   * @return string
   */
  protected function getAvailablePageWrapper($url, $page)
  {
    return '<a href="' . htmlentities($url) . '" rel="external nofollow" title="第"'. $page .'"页" >' . $page . '</a>';
  }
  /**
   * 生成一个禁用的按钮
   *
   * @param string $text
   * @return string
   */
  protected function getDisabledTextWrapper($text)
  {
    return '<p class="pageEllipsis">' . $text . '</p>';
  }
  /**
   * 生成一个激活的按钮
   *
   * @param string $text
   * @return string
   */
  protected function getActivePageWrapper($text)
  {
    return '<a href="" class=" rel="external nofollow" cur">' . $text . '</a>';
  }
  /**
   * 生成省略号按钮
   *
   * @return string
   */
  protected function getDots()
  {
    return $this->getDisabledTextWrapper('...');
  }
  /**
   * 批量生成页码按钮.
   *
   * @param array $urls
   * @return string
   */
  protected function getUrlLinks(array $urls)
  {
    $html = '';
    foreach ($urls as $page => $url) {
      $html .= $this->getPageLinkWrapper($url, $page);
    }
    return $html;
  }
  /**
   * 生成普通页码按钮
   *
   * @param string $url
   * @param int  $page
   * @return string
   */
  protected function getPageLinkWrapper($url, $page)
  {
    if ($page == $this->currentPage()) {
      return $this->getActivePageWrapper($page);
    }
    return $this->getAvailablePageWrapper($url, $page);
  }
  /**
   * 分页样式
   */
  protected function css(){
    return ' <style type="text/css">
      .pagination p{
        margin:0;
        cursor:pointer
      }
      .pagination{
        height:40px;
        padding:20px 0px;
      }
      .pagination a{
        display:block;
        float:left;
        margin-right:10px;
        padding:2px 12px;
        border:1px #cccccc solid;
        background:#fff;
        text-decoration:none;
        color:#808080;
        font-size:12px;
        line-height:24px;
      }
      .pagination a:hover{
        color:#009688;
        background: white;
        border:1px #009688 solid;
      }
      .pagination a.cur{
        border:none;
        background:#009688;
        color:#fff;
      }
      .pagination p{
        float:left;
        padding:2px 12px;
        font-size:12px;
        line-height:24px;
        color:#bbb;
        border:1px #ccc solid;
        background:#fcfcfc;
        margin-right:8px;
      }
      .pagination p.pageRemark{
        border-style:none;
        background:none;
        margin-right:0px;
        padding:4px 0px;
        color:#666;
      }
      .pagination p.pageRemark b{
        color:red;
      }
      .pagination p.pageEllipsis{
        border-style:none;
        background:none;
        padding:4px 0px;
        color:#808080;
      }
      .dates li {font-size: 14px;margin:20px 0}
      .dates li span{float:right}
    </style>';
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
一个PHP分页类的代码
May 18 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
WordPress网站性能优化指南
Nov 18 PHP
php中的常用魔术方法汇总
Feb 14 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
php操作mongodb封装类与用法实例
Sep 01 #PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 #PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 #PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 #PHP
PHP实现websocket通信的方法示例
Aug 28 #PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 #PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 #PHP
You might like
php动态变量定义及使用
2015/06/10 PHP
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python struct.unpack
2008/09/06 Python
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
Python实现的快速排序算法详解
2017/08/01 Python
python实现TF-IDF算法解析
2018/01/02 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
Python中的heapq模块源码详析
2019/01/08 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
党员心得体会范文2016
2016/01/23 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js