thinkphp框架page类与bootstrap分页(美化)


Posted in PHP onJune 25, 2017

bootstrap分样式使用方法这里写链接内容

<nav aria-label="Page navigation">
 <ul class="pagination">
  <li>
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Previous">
    <span aria-hidden="true">«</span>
   </a>
  </li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a></li>
  <li>
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Next">
    <span aria-hidden="true">»</span>
   </a>
  </li>
 </ul>
</nav>

1.找到Thinkphp中的Page.class.php,然后使用下面的文件内容完全替换

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think;
class Page{
  public $firstRow; // 起始行数
  public $listRows; // 列表每页显示行数
  public $parameter; // 分页跳转时要带的参数
  public $totalRows; // 总行数
  public $totalPages; // 分页总页面数
  public $rollPage  = 11;// 分页栏每页显示的页数
  public $lastSuffix = true; // 最后一页是否显示总页数
  private $p    = 'p'; //分页参数名
  private $url   = ''; //当前链接URL
  private $nowPage = 1;
  // 分页显示定制
  private $config = array(
    'header' => '<li><span>共 %TOTAL_ROW% 条记录<span class="sr-only"></span></span></li>',
    'prev'  => '<<',
    'next'  => '>>',
    'first' => '1...',
    'last'  => '...%TOTAL_PAGE%',
    'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
  );
  /**
   * 架构函数
   * @param array $totalRows 总的记录数
   * @param array $listRows 每页显示记录数
   * @param array $parameter 分页跳转的参数
   */
  public function __construct($totalRows, $listRows=20, $parameter = array()) {
    C('VAR_PAGE') && $this->p = C('VAR_PAGE'); //设置分页参数名称
    /* 基础设置 */
    $this->totalRows = $totalRows; //设置总记录数
    $this->listRows  = $listRows; //设置每页显示行数
    $this->parameter = empty($parameter) ? $_GET : $parameter;
    $this->nowPage  = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]);
    $this->nowPage  = $this->nowPage>0 ? $this->nowPage : 1;
    $this->firstRow  = $this->listRows * ($this->nowPage - 1);
  }
  /**
   * 定制分页链接设置
   * @param string $name 设置名称
   * @param string $value 设置值
   */
  public function setConfig($name,$value) {
    if(isset($this->config[$name])) {
      $this->config[$name] = $value;
    }
  }
  /**
   * 生成链接URL
   * @param integer $page 页码
   * @return string
   */
  private function url($page){
    return str_replace(urlencode('[PAGE]'), $page, $this->url);
  }
  /**
   * 组装分页链接
   * @return string
   */
  public function show() {
    if(0 == $this->totalRows) return '';
    /* 生成URL */
    $this->parameter[$this->p] = '[PAGE]';
    $this->url = U(ACTION_NAME, $this->parameter);
    /* 计算分页信息 */
    $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数
    if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
      $this->nowPage = $this->totalPages;
    }
    /* 计算分页零时变量 */
    $now_cool_page   = $this->rollPage/2;
    $now_cool_page_ceil = ceil($now_cool_page);
    $this->lastSuffix && $this->config['last'] = $this->totalPages;
    //上一页
    $up_row = $this->nowPage - 1;
    $up_page = $up_row > 0 ? '<li><a class="prev" href="' . $this->url($up_row) . '" rel="external nofollow" >' . $this->config['prev'] . '</a></li>' : '';
    //下一页
    $down_row = $this->nowPage + 1;
    $down_page = ($down_row <= $this->totalPages) ? '<li><a class="next" href="' . $this->url($down_row) . '" rel="external nofollow" >' . $this->config['next'] . '</a></li>' : '';
    //第一页
    $the_first = '';
    if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){
      $the_first = '<li><a class="first" href="' . $this->url(1) . '" rel="external nofollow" >' . $this->config['first'] . '</a></li>';
    }
    //最后一页
    $the_end = '';
    if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
      $the_end = '<li><a class="end" href="' . $this->url($this->totalPages) . '" rel="external nofollow" >' . $this->config['last'] . '</a></li>';
    }
    //数字连接
    $link_page = "";
    for($i = 1; $i <= $this->rollPage; $i++){
      if(($this->nowPage - $now_cool_page) <= 0 ){
        $page = $i;
      }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){
        $page = $this->totalPages - $this->rollPage + $i;
      }else{
        $page = $this->nowPage - $now_cool_page_ceil + $i;
      }
      if($page > 0 && $page != $this->nowPage){
        if($page <= $this->totalPages){
          $link_page .= '<li><a class="num" href="' . $this->url($page) . '" rel="external nofollow" >' . $page . '</a></li>';
        }else{
          break;
        }
      }else{
        if($page > 0 && $this->totalPages != 1){
          $link_page .= '<li class="active "><span>'.$page.'<span class="sr-only"></span></span></li>';
        }
      }
    }
    //替换分页内容
    $page_str = str_replace(
      array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
      array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
      $this->config['theme']);
    return "<ul class='pagination'>{$page_str}</ul>";
  }
}

2.相关控制器代码

//所有新闻
  public function all_news(){
    $Article=M("Article");
    $where['article_type']=1;
    //查询满足要求的总的记录数
    $count=$Article->where($where)->count();
    //实例化分页类传入总记录数和煤业显示的记录数
    $Page=new \Think\Page($count,1);
    //分页显示输出
    $show=$Page->show();
    // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
    $news=$Article->where($where)->order('pub_time')->field('id,title,institution_type,author_name,pub_time')->limit($Page->firstRow.','.$Page->listRows)->select();
    //赋值数据集
    $this->assign('news',$news);
    //赋值分页输出
    $this->assign('page',$show);
    $this->display();
  }

3.html中只需要

<div class="panel-body center">
           {$page}

以上所述是小编给大家介绍的thinkphp框架page类与bootstrap分页(美化),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

PHP 相关文章推荐
用PHP连mysql和oracle数据库性能比较
Oct 09 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
php支付宝APP支付功能
Jul 29 PHP
用php定义一个数组最简单的方法
Oct 04 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 #PHP
php-fpm开启状态统计的方法详解
Jun 23 #PHP
PHP多种序列化/反序列化的方法详解
Jun 23 #PHP
PHP后端银联支付及退款实例代码
Jun 23 #PHP
PHP单例模式简单用法示例
Jun 23 #PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 #PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 #PHP
You might like
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
PHP链表操作简单示例
2016/10/15 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
解决vue点击控制单个样式的问题
2018/09/05 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
js制作提示框插件
2020/12/24 Javascript
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
使用pip安装python库的多种方式
2019/07/31 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
python实现复制文件到指定目录
2019/10/16 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
介绍一下Java的事务处理
2012/12/07 面试题
中式面点餐厅创业计划书
2014/01/29 职场文书
企业军训感言
2014/02/08 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
python中os.path.join()函数实例用法
2021/05/26 Python