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中的Class的几点个人看法
Oct 09 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
php天翼开放平台短信发送接口实现方法
Dec 22 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
php文件缓存类用法实例分析
Apr 22 PHP
试用php中oci8扩展
Jun 18 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
php常用数组函数实例小结
Dec 29 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 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
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
PHP微信分享开发详解
2017/01/14 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
javascript history对象详解
2017/02/09 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
js实现移动端轮播图
2020/12/21 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python3处理word文档实例分析
2020/12/01 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
三个Unix的命令面试题
2015/04/12 面试题
程序员岗位职责
2013/11/11 职场文书
园林设计师自荐信
2013/11/18 职场文书
2014年部门工作总结
2014/11/12 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python