站长图库向大家介绍了thinkphp分页,增加每页显示条数等相关知识,希望对您有所帮助
需求是多加一个类似phpmyadmin一样的每页显示条数,在网上查了好久都没找到,看到thinkphp分页类是html拼接的,很low,但是方便了我修改没,就在原生分页类基础上新定义了一个num变量,show方法返回的时候 thinkphp拼接html的地方,新加了一段选择条数的代码,如下:
return "<ul class='am-pagination am-pagination-right'>{$page_str}</ul> <div class='am-dropdown am-dropdown-up' data-am-dropdown> <button class='am-btn am-btn-primary am-dropdown-toggle' data-am-dropdown-toggle>显示条数 <span class='am-icon-caret-up'></span></button> <ul class='am-dropdown-content'> <li><a href='".$this->urlNum(10,1)."'>10</a></li> <li><a href='".$this->urlNum(30,1)."'>30</a></li> <li><a href='".$this->urlNum(50,1)."'>50</a></li> </ul> </div>";然后新加的urlNum方法是这样:
private function urlNum($num,$page){ $str = str_replace(urlencode('[PAGE]'), $page, $this->url); return str_replace(urlencode('[NUM]'), $num, $str);}开始的时候由于page这个变量 thinkphp会先变一个转码的,后面才替换;而且page=1的时候 url里是不显示的,但是还有这个参数,导致num这个变量老是搞得url 很不稳定、经常叠加。
后面只有做了一个小牺牲(选定每页显示条数的时候 url page即使为1 也会加上),不过这并没有什么影响。
整个代码分页类 就是这样:
<?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 $num = 'num'; //分页参数名 private $url = ''; //当前链接URL private $nowPage = 1; // 分页显示定制 private $config = array( 'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>', 'prev' => '«', 'next' => '»', 'first' => '1...', 'last' => '...%TOTAL_PAGE%', 'theme' => '%HEADER% %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); $num&nbs

