Heim >Backend-Entwicklung >PHP-Tutorial >Wie erzielt thinkphp einen Paging-Effekt? Schreiben und Verwenden von Paging-Klassen (Codebeispiele)
Der Inhalt dieses Artikels besteht darin, vorzustellen, wie thinkphp den Paging-Effekt erzielen kann. Schreiben und Verwenden von Paging-Klassen (Codebeispiele). Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Wir möchten den Paging-Effekt wie unten gezeigt erreichen:
Diese Paging-Klasse basiert auf der im Thinkphp-Framework integrierten Paging-Klasse
Einige Designs der Original-Paging-Klasse sind in der tatsächlichen Verwendung nicht sehr praktisch.
1. Die Paginierung wird nicht angezeigt, wenn nur eine Seite vorhanden ist Paging-Klasse befindet sich auf der aktuellen Seite. Wenn es sich um die erste und letzte Seite handelt, werden die Schaltflächen für die erste und letzte Seite nicht angezeigt.
3 Die Anzahl der Seiten ist relativ klein, die Schaltfläche „Erste und letzte Seite“ wird nicht angezeigt wurde wie folgt geändert:
6. Wenn keine Seite vorhanden ist, wird die Seite angezeigt Die Schaltflächen „Startseite“ und „Letzte Seite“ werden standardmäßig angezeigt. Wenn die aktuelle Seite jedoch die erste und letzte Seite ist, klicken Sie auf die Schaltfläche „Keine Auswirkung“. 🎜>9. Fügen Sie dem übergeordneten p eine Klasse hinzu, die den paginierten Inhalt umschließt.
Beispielumgebung: thinkphp3 .2.3;
Paging-Verzeichnis: /Thinkphp/Library/Org/ Bjy/Page.class.php
Der Paging-Klassencode lautet wie folgt:
<?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:> // +---------------------------------------------------------------------- /* * PHP分页类 * 修改者:白俊遥 * 日 期:2015.5.10 * 邮 箱:baijunyao@baijunyao.com * 博 客:http://baijunyao.com */ namespace Org\Bjy; class Page{ public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总行数 public $totalPages; // 分页总页面数 public $rollPage = 5;// 分页栏每页显示的页数 public $lastSuffix = true; // 最后一页是否显示总页数 private $p = 'p'; //分页参数名 private $url = ''; //当前链接URL private $nowPage = 1; // 分页显示定制 private $config = array( 'header' => '<span>共 %TOTAL_ROW% 条记录</span>', 'first' => '首页', 'prev' => '上一页', 'next' => '下一页', 'last' => '末页', 'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%', ); /** * 架构函数 * @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(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.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); //上一页 $up_row = $this->nowPage - 1; $up_page = $up_row > 0 ? '<a>url($up_row) . '">' . $this->config['prev'] . '</a>' : '<a>' . $this->config['prev'] . '</a>'; //下一页 $down_row = $this->nowPage + 1; $down_page = ($down_row totalPages) ? '<a>url($down_row) . '">' . $this->config['next'] . '</a>' : '<a>' . $this->config['next'] . '</a>'; //第一页 $the_first = '<a>url(1) . '">' . $this->config['first'] . '</a>'; //最后一页 $the_end = '<a>url($this->totalPages) . '">' . $this->config['last'] . '</a>'; //数字连接 $link_page = ""; for($i = 1; $i rollPage; $i++){ if(($this->nowPage - $now_cool_page) 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) { if($page != $this->nowPage){ if($page totalPages){ $link_page .= '<a>url($page) . '">' . $page . '</a>'; }else{ break; } }else{ $link_page .= '<span>' . $page . '</span>'; } } } //替换分页内容 $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 '<div>'.$page_str.'</div>'; } }</http:>
Seitenklassenaufruf:
$count=$this->where($where)->count(); $page=new \Org\Bjy\Page($count,$limit); $list=$this->where($where)->order('addtime desc')->limit($page->firstRow.','.$page->listRows)->select(); $show=$page->show();
Seitenklassen-CSS
.b-page { background: #fff; box-shadow: 0px 1px 2px 0px #E2E2E2; } .page { width: 100%; padding: 30px 15px; background: #FFF; text-align: center; overflow: hidden; } .page .first, .page .prev, .page .current, .page .num, .page .current, .page .next, .page .end { padding: 8px 16px; margin: 0px 5px; display: inline-block; color: #008CBA; border: 1px solid #F2F2F2; border-radius: 5px; } .page .first:hover, .page .prev:hover, .page .current:hover, .page .num:hover, .page .current:hover, .page .next:hover, .page .end:hover { text-decoration: none; background: #F8F5F5; } .page .current { background-color: #008CBA; color: #FFF; border-radius: 5px; border: 1px solid #008CBA; } .page .current:hover { text-decoration: none; background: #008CBA; } .page .not-allowed { cursor: not-allowed; }
Seitenklassenverwendung Die Methode ist dieselbe wie die ursprüngliche thinkphp-spezifische Referenz: thinkphp-Handbuch-Daten-Paging (http:// document.thinkphp.cn/manual_3_2.html#data_page)
Das obige ist der detaillierte Inhalt vonWie erzielt thinkphp einen Paging-Effekt? Schreiben und Verwenden von Paging-Klassen (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!