tp5 分頁(yè)詳解

最常用的應(yīng)該就是分頁(yè)了包个,tp5已經(jīng)將分頁(yè)給封裝好了,實(shí)在是方便!

分頁(yè)主要在model中查詢語(yǔ)句例使用paginate()函數(shù)碧囊。


tp5分頁(yè)的默認(rèn)樣式很丑树灶,或者說(shuō)根本沒(méi)有樣式。

以下為修改方法(參考其他大神的擴(kuò)展代碼):

1.首先在tp的擴(kuò)展文件夾extend中創(chuàng)建page文件夾(文件夾名稱可以自己決定糯而,命名空間對(duì)就行)

2. 將自定義分頁(yè)類文件page.php放到page文件夾下

? ??<?php

namespace page;

use think\Paginator;

class Page extends Paginator

{

? ? //首頁(yè)

? ? protected function home() {

? ? ? ? if ($this->currentPage() > 1) {

? ? ? ? ? ? return "<a href='" . $this->url(1) . "' title='首頁(yè)'>首頁(yè)</a>";

? ? ? ? } else {

? ? ? ? ? ? return "<p>首頁(yè)</p>";

? ? ? ? }

? ? }

? ? //上一頁(yè)

? ? protected function prev() {

? ? ? ? if ($this->currentPage() > 1) {

? ? ? ? ? ? return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一頁(yè)'>上一頁(yè)</a>";

? ? ? ? } else {

? ? ? ? ? ? return "<p>上一頁(yè)</p>";

? ? ? ? }

? ? }

? ? //下一頁(yè)

? ? protected function next() {

? ? ? ? if ($this->hasMore) {

? ? ? ? ? ? return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一頁(yè)'>下一頁(yè)</a>";

? ? ? ? } else {

? ? ? ? ? ? return"<p>下一頁(yè)</p>";

? ? ? ? }

? ? }

? ? //尾頁(yè)

? ? protected function last() {

? ? ? ? if ($this->hasMore) {

? ? ? ? ? ? return "<a href='" . $this->url($this->lastPage) . "' title='尾頁(yè)'>尾頁(yè)</a>";

? ? ? ? } else {

? ? ? ? ? ? return "<p>尾頁(yè)</p>";

? ? ? ? }

? ? }

? ? //統(tǒng)計(jì)信息

? ? protected function info(){

? ? ? ? return "<p class='pageRemark'>共<b>" . $this->lastPage .

? ? ? ? ? ? "</b>頁(yè)<b>" . $this->total . "</b>條數(shù)據(jù)</p>";

? ? }

? ? /**

? ? * 頁(yè)碼按鈕

? ? * @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;

? ? }

? ? /**

? ? * 渲染分頁(yè)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()

? ? ? ? ? ? ? ? );

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? /**

? ? * 生成一個(gè)可點(diǎn)擊的按鈕

? ? *

? ? * @param? string $url

? ? * @param? int? ? $page

? ? * @return string

? ? */

? ? protected function getAvailablePageWrapper($url, $page)

? ? {

? ? ? ? return '<a href="' . htmlentities($url) . '" title="第"'. $page .'"頁(yè)" >' . $page . '</a>';

? ? }

? ? /**

? ? * 生成一個(gè)禁用的按鈕

? ? *

? ? * @param? string $text

? ? * @return string

? ? */

? ? protected function getDisabledTextWrapper($text)

? ? {

? ? ? ? return '<p class="pageEllipsis">' . $text . '</p>';

? ? }

? ? /**

? ? * 生成一個(gè)激活的按鈕

? ? *

? ? * @param? string $text

? ? * @return string

? ? */

? ? protected function getActivePageWrapper($text)

? ? {

? ? ? ? return '<a href="" class="cur">' . $text . '</a>';

? ? }

? ? /**

? ? * 生成省略號(hào)按鈕

? ? *

? ? * @return string

? ? */

? ? protected function getDots()

? ? {

? ? ? ? return $this->getDisabledTextWrapper('...');

? ? }

? ? /**

? ? * 批量生成頁(yè)碼按鈕.

? ? *

? ? * @param? array $urls

? ? * @return string

? ? */

? ? protected function getUrlLinks(array $urls)

? ? {

? ? ? ? $html = '';

? ? ? ? foreach ($urls as $page => $url) {

? ? ? ? ? ? $html .= $this->getPageLinkWrapper($url, $page);

? ? ? ? }

? ? ? ? return $html;

? ? }

? ? /**

? ? * 生成普通頁(yè)碼按鈕

? ? *

? ? * @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);

? ? }

? ? /**

? ? * 分頁(yè)樣式

? ? */

? ? 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)

//分頁(yè)配置

? ? 'paginate'? ? ? ? ? ? ? => [

? ? ? ? 'type'? ? ? => 'bootstrap',

? ? ? ? 'var_page'? => 'page',

? ? ? ? 'list_rows' => 15,

? ? ],

將上面分頁(yè)配置改為:

? //自定義分頁(yè)配置?

? 'paginate'? ? ? ? ? ? ? => [?

? ? ? 'type'? ? ? => 'page\page',//分頁(yè)類?

? ? ? 'var_page'? => 'page',?

? ? ? 'list_rows' => 15,?

? ],


效果圖:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熄驼,一起剝皮案震驚了整個(gè)濱河市像寒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓜贾,老刑警劉巖诺祸,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祭芦,居然都是意外死亡筷笨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門龟劲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胃夏,“玉大人,你說(shuō)我怎么就攤上這事昌跌⊙鲑鳎” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵避矢,是天一觀的道長(zhǎng)悼瘾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)审胸,這世上最難降的妖魔是什么亥宿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮砂沛,結(jié)果婚禮上烫扼,老公的妹妹穿的比我還像新娘。我一直安慰自己碍庵,他們只是感情好映企,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著静浴,像睡著了一般堰氓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苹享,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天双絮,我揣著相機(jī)與錄音,去河邊找鬼。 笑死囤攀,一個(gè)胖子當(dāng)著我的面吹牛软免,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焚挠,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼膏萧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蝌衔?” 一聲冷哼從身側(cè)響起榛泛,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胚委,沒(méi)想到半個(gè)月后挟鸠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亩冬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硼身。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硅急。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖佳遂,靈堂內(nèi)的尸體忽然破棺而出营袜,到底是詐尸還是另有隱情,我是刑警寧澤丑罪,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布荚板,位于F島的核電站,受9級(jí)特大地震影響吩屹,放射性物質(zhì)發(fā)生泄漏跪另。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一煤搜、第九天 我趴在偏房一處隱蔽的房頂上張望免绿。 院中可真熱鬧,春花似錦擦盾、人聲如沸嘲驾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辽故。三九已至,卻和暖如春腐碱,著一層夾襖步出監(jiān)牢的瞬間誊垢,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彤枢,地道東北人狰晚。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缴啡,于是被迫代替她去往敵國(guó)和親壁晒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容