最常用的應(yīng)該就是分頁了,tp5已經(jīng)將分頁給封裝好了,實在是方便!
分頁主要在model中查詢語句例使用paginate()函數(shù)。

tp5分頁的默認樣式很丑,或者說根本沒有樣式。
以下為修改方法(參考其他大神的擴展代碼):
1.首先在tp的擴展文件夾extend中創(chuàng)建page文件夾(文件夾名稱可以自己決定,命名空間對就行)
2. 將自定義分頁類文件page.php放到page文件夾下
? ??<?php
namespace page;
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>";
? ? ? ? }
? ? }
? ? //統(tǒng)計信息
? ? protected function info(){
? ? ? ? return "<p class='pageRemark'>共<b>" . $this->lastPage .
? ? ? ? ? ? "</b>頁<b>" . $this->total . "</b>條數(shù)據(jù)</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) . '" 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="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;
? ? ? ? ? ? ? ? height:24px;
? ? ? ? ? ? ? ? border:1px #cccccc solid;
? ? ? ? ? ? ? ? background:#fff;
? ? ? ? ? ? ? ? text-decoration:none;
? ? ? ? ? ? ? ? color:#808080;
? ? ? ? ? ? ? ? font-size:12px;
? ? ? ? ? ? ? ? line-height:24px;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination a:hover{
? ? ? ? ? ? ? ? color:#077ee3;
? ? ? ? ? ? ? ? background: white;
? ? ? ? ? ? ? ? border:1px #077ee3 solid;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination a.cur{
? ? ? ? ? ? ? ? border:none;
? ? ? ? ? ? ? ? background:#077ee3;
? ? ? ? ? ? ? ? color:#fff;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination p{
? ? ? ? ? ? ? ? float:left;
? ? ? ? ? ? ? ? padding:2px 12px;
? ? ? ? ? ? ? ? font-size:12px;
? ? ? ? ? ? ? ? height:24px;
? ? ? ? ? ? ? ? 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>';
? ? }
}
3.修改配置文件(/application/config.php)
//分頁配置
? ? 'paginate'? ? ? ? ? ? ? => [
? ? ? ? 'type'? ? ? => 'bootstrap',
? ? ? ? 'var_page'? => 'page',
? ? ? ? 'list_rows' => 15,
? ? ],
將上面分頁配置改為:
? //自定義分頁配置?
? 'paginate'? ? ? ? ? ? ? => [?
? ? ? 'type'? ? ? => 'page\page',//分頁類?
? ? ? 'var_page'? => 'page',?
? ? ? 'list_rows' => 15,?
? ],

效果圖:

看下樣式要好很多,想要自己寫類文件也可以按照這種方法來做。