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 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
Apache服务器无法使用的解决方法
May 08 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
Jul 28 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
php异常处理方法实例汇总
Jun 24 PHP
php文件上传类完整实例
May 14 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
PHP构造二叉树算法示例
Jun 21 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 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.ini 中文版
2006/10/28 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
PHP微信分享开发详解
2017/01/14 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
js 文件引入实现代码
2010/04/23 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
Python迭代用法实例教程
2014/09/08 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
python3实现多线程聊天室
2018/12/12 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
校园会短篇的广播稿
2014/10/21 职场文书
初中班主任工作随笔
2015/08/15 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python