亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

關于PHP框架Laravel插件Pagination實現自定義分頁的方

2020-03-22 19:17:03
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了html' target='_blank'>PHP框架Laravel5.1插件Pagination實現自定義分頁的相關資料,需要的朋友可以參考下

Laravel 的分頁很方便,其實擴展起來也挺容易的,下面就來做個示例,擴展一下 paginate() 和 simplePaginate() 方法,來實現我們自定義分頁樣式,比如顯示 上一頁 和 下一頁 ,而不是 《 和 》 ,當然擴展的方法掌握了你就可以肆無忌憚的擴展一個你想要的分頁了,比如跳轉到某一頁,分頁顯示一共多少記錄,當前顯示的記錄范圍等等巴拉巴拉的。。。

5.1和5.2應該是同樣的方法,我這里用的是5.2的版本。文檔告訴我們 Paginator 對應于查詢語句構造器和 Eloquent 的 simplePaginate 方法,而 LengthAwarePaginator 則等同于 paginate 方法。那我們還是來看下源碼,具體這個 paginate 是如何實現 render() 的,

Illuminate/Pagination/LengthAwarePaginator.php

 ?phpnamespace Illuminate/Pagination;......class LengthAwarePaginator extends AbstractPaginator implements Arrayable, ArrayAccess, Countable, IteratorAggregate, JsonSerializable, Jsonable, LengthAwarePaginatorContract ...... public function render(Presenter $presenter = null) if (is_null($presenter) static::$presenterResolver) { $presenter = call_user_func(static::$presenterResolver, $this); $presenter = $presenter ?: new BootstrapThreePresenter($this); return $presenter- render();......}

render() 中傳入的是一個 Presenter 的實例,并調用這個實例化的 render 方法來實現分頁的顯示的。如果沒有則調用 BootstrapThreePresenter 中 render() 的,來看看 BootstrapThreePresenter 是干嘛的

Illuminate/Pagination/BootstrapThreePresenter.php

 ?phpnamespace Illuminate/Pagination;use Illuminate/Support/HtmlString; use Illuminate/Contracts/Pagination/Paginator as PaginatorContract; use Illuminate/Contracts/Pagination/Presenter as PresenterContract;class BootstrapThreePresenter implements PresenterContract  use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait; * The paginator implementation. * @var /Illuminate/Contracts/Pagination/Paginator protected $paginator; * The URL window data structure. * @var array protected $window; * Create a new Bootstrap presenter instance. * @param /Illuminate/Contracts/Pagination/Paginator $paginator * @param /Illuminate/Pagination/UrlWindow|null $window * @return void public function __construct(PaginatorContract $paginator, UrlWindow $window = null) $this- paginator = $paginator; $this- window = is_null($window) ? UrlWindow::make($paginator) : $window- get(); * Determine if the underlying paginator being presented has pages to show. * @return bool public function hasPages() return $this- paginator- hasPages(); * Convert the URL window into Bootstrap HTML. * @return /Illuminate/Support/HtmlString public function render() if ($this- hasPages()) { return new HtmlString(sprintf( ul >

這里可以看到 BootstrapThreePresenter 實現了 PresenterContract 的接口, render() 才是分頁顯示的真正實現,構造方法中的第一個參數 PaginatorContract 其實就是一個 Paginator 我們繼續看下 PresenterContract 也就是 Presenter 接口中定義了什么方法需要實現

illuminate/contracts/Pagination/Presenter.php

 ?phpnamespace Illuminate/Contracts/Pagination;interface Presenter  * Render the given paginator. * @return /Illuminate/Contracts/Support/Htmlable|string public function render(); * Determine if the underlying paginator being presented has pages to show. * @return bool public function hasPages();}

其中定義了 render 和 hasPages 方法需要實現

好了,那我們現在已經很清晰了,我們要自定義分頁的顯示,那么就要寫一個我們自己的 Presenter 來實現接口中的 render() 和 hasPages() 就可以了。

首先就來簡單的實現一個paginate(),顯示出來 上一頁 和 下一頁 ,中間是分頁數字的例子。

新建文件如下(個人習慣)

app/Foundations/Pagination/CustomerPresenter.php

 ?php namespace App/Foundations/Pagination;use Illuminate/Contracts/Pagination/Presenter as PresenterContract; use Illuminate/Contracts/Pagination/LengthAwarePaginator as PaginatorContract; use Illuminate/Pagination/UrlWindow; use Illuminate/Support/HtmlString; use Illuminate/Pagination/BootstrapThreeNextPreviousButtonRendererTrait; use Illuminate/Pagination/UrlWindowPresenterTrait;class CustomerPresenter implements PresenterContract  use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait; protected $paginator; protected $window; * Create a new Bootstrap presenter instance. * @param /Illuminate/Contracts/Pagination/Paginator $paginator * @param /Illuminate/Pagination/UrlWindow|null $window * @return void public function __construct(PaginatorContract $paginator, UrlWindow $window = null) $this- paginator = $paginator; $this- window = is_null($window) ? UrlWindow::make($paginator) : $window- get(); * Determine if the underlying paginator being presented has pages to show. * @return bool public function hasPages() return $this- paginator- hasPages(); * Convert the URL window into Bootstrap HTML. * @return /Illuminate/Support/HtmlString public function render() if ($this- hasPages()) { return new HtmlString(sprintf( ul >

就這么簡單,主要就是 render() 方法,如果項目中需要修改分頁樣式,或者添加分頁跳轉之類的需求只要重寫其中的各項顯示的方法中的html元素就可以了,很靈活,在blade模板中也需要修該,比如我們的 Paginator 叫 $users ,默認的分頁顯示是這樣的:

{!! $users- render() !!}
修改成我們自定義后的分頁顯示:

{!! with(new /App/Foundations/Pagination/CustomerPresenter($categories))- render() !!}
好了,這樣在頁面應該就可以看到分頁鏈接中含有 上一頁 和 下一頁 加數字的樣式了。

那么如果擴展simplePaginate?其實很簡單,只要繼承剛才的 CustomerPresenter ,實現 hasPages 和 render ,至于為什么可以按照我上面查看源碼的方式看一下就知道了,比如我們改成 上一篇 和 下一篇

新建App/Foundations/Pagination/CustomerSimplePresenter.php

 ?php namespace App/Foundations/Pagination;
use Illuminate/Support/HtmlString; use Illuminate/Contracts/Pagination/Paginator as PaginatorContract;class CustomerSimplePresenter extends CustomerPresenter * Create a simple Bootstrap 3 presenter. * @param /Illuminate/Contracts/Pagination/Paginator $paginator * @return void public function __construct(PaginatorContract $paginator) $this- paginator = $paginator; * Determine if the underlying paginator being presented has pages to show. * @return bool public function hasPages() return $this- paginator- hasPages() count($this- paginator- items()) * Convert the URL window into Bootstrap HTML. * @return /Illuminate/Support/HtmlString public function render() if ($this- hasPages()) { return new HtmlString(sprintf( ul >

分頁顯示:

{!! with(new /App/Foundations/Pagination/CustomerSimplePresenter($categories))- render() !!}

方法就是這個方法,具體修改按照自己需求重寫其中對應的顯示html元素的方法就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

Laravel 4 的Pages和表單驗證

如何解決Laravel的throttle中間件失效的問題

以上就是關于PHP框架Laravel插件Pagination實現自定義分頁的方法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲性猛交xxxxwww| 8050国产精品久久久久久| 欧洲s码亚洲m码精品一区| 疯狂做受xxxx高潮欧美日本| 国产精品视频成人| 亚洲人成电影在线播放| 日本精品视频在线播放| 国产成人午夜视频网址| 国产精品久久久av| 亚洲色图35p| 98精品国产自产在线观看| 国产精品视频久久久久| 色黄久久久久久| 日韩中文字在线| 亚洲福利精品在线| 欧美激情一区二区三级高清视频| 国产精品自拍网| 国产小视频91| 亚洲精品成人久久久| 91精品久久久久久综合乱菊| 国产美女精品视频免费观看| 日本成人精品在线| 国产精品免费电影| 日韩视频中文字幕| 高潮白浆女日韩av免费看| 亚洲欧洲高清在线| 午夜精品国产精品大乳美女| 韩国日本不卡在线| 欧美激情视频在线免费观看 欧美视频免费一| 色播久久人人爽人人爽人人片视av| 亚洲激情成人网| 日韩激情av在线播放| 91欧美激情另类亚洲| 亚洲最大的成人网| 亚洲性猛交xxxxwww| 国产成人啪精品视频免费网| 欧美激情乱人伦| 欧美日韩免费观看中文| 亚洲精品在线看| 欧美区在线播放| 久久久久久久久爱| 国产精品福利久久久| 欧美激情免费观看| 日本一区二区在线播放| 国产精品亚洲视频在线观看| 亚洲色图校园春色| 一区二区三区美女xx视频| 欧美国产日产韩国视频| 国产欧美在线播放| 国产精品日本精品| 欧美亚洲国产精品| 日韩av网站电影| 7777免费精品视频| 国产欧美一区二区三区四区| 激情成人在线视频| 亚洲女人初尝黑人巨大| 97在线精品视频| 国产欧美日韩丝袜精品一区| 亚洲japanese制服美女| 国产精品免费久久久久影院| 国产精品免费看久久久香蕉| 国产美女久久精品| 国产精品成人国产乱一区| 亚洲免费av电影| 欧美极品少妇xxxxx| 欧美另类高清videos| 欧美激情免费看| 欧美另类第一页| 国产精品2018| 国产精品久久久久久亚洲影视| 亚洲综合日韩在线| 美女福利视频一区| 欧美日韩成人黄色| 亚洲人成电影网站色| 亚洲精品aⅴ中文字幕乱码| 日韩精品在线播放| 国产精品一香蕉国产线看观看| 欧美日韩国产黄| 欧美一级淫片丝袜脚交| 国产成人久久久| 国产精品久久久久久久久久久新郎| 国产成人精品一区二区在线| 日韩av最新在线观看| 91在线观看免费高清| 欧美丰满少妇xxxxx做受| 久久99视频免费| 欧美日韩国产综合视频在线观看中文| 国产精品无码专区在线观看| 欧美日韩免费在线观看| 在线播放国产精品| 亚洲三级av在线| 亚洲国内精品视频| 深夜福利91大全| 国产99视频在线观看| 欧美激情视频在线观看| 国产美女扒开尿口久久久| 92福利视频午夜1000合集在线观看| 中文字幕亚洲欧美日韩在线不卡| 亚洲激情视频网站| 国产精品91在线| 一区二区在线免费视频| 成人伊人精品色xxxx视频| 日本韩国在线不卡| 日韩成人高清在线| 高潮白浆女日韩av免费看| 色噜噜狠狠色综合网图区| 韩国精品久久久999| 亚洲精品美女视频| 最近2019年中文视频免费在线观看| 日韩综合中文字幕| 成人黄色免费看| 欧美大码xxxx| 国产综合在线看| 成人精品久久久| 久久免费在线观看| 欧美大胆在线视频| 91久久久国产精品| 亚洲大胆人体在线| 81精品国产乱码久久久久久| 一区二区中文字幕| 国产精品亚洲美女av网站| 亚洲国产成人精品女人久久久| 热久久视久久精品18亚洲精品| 91麻豆国产语对白在线观看| 在线日韩精品视频| 日韩av在线高清| 亚洲激情电影中文字幕| 中文字幕亚洲欧美日韩高清| 欧美性jizz18性欧美| 欧美高清电影在线看| 国产精品ⅴa在线观看h| 最好看的2019年中文视频| 日韩国产在线看| 日本欧美一二三区| 亚洲精品视频播放| 亚洲欧美国产日韩中文字幕| 国产精品一区二区女厕厕| 日韩在线免费高清视频| 国产精品免费一区豆花| 亚洲欧美日韩在线一区| 国产深夜精品福利| 日韩的一区二区| 一本色道久久88综合日韩精品| 亚洲视频在线观看| 欧美激情视频播放| 91精品91久久久久久| 国产欧美日韩亚洲精品| 色偷偷偷亚洲综合网另类| 日韩在线观看免费高清完整版| 国产精品久久97| 亚洲欧美在线x视频| 国产日韩欧美视频| 国产精品久久久久久久天堂| 国内精品一区二区三区四区| 国产精品美女在线观看| 成人福利网站在线观看11| 国产免费亚洲高清| 久久免费在线观看| 日韩精品久久久久| 97热精品视频官网| 97香蕉超级碰碰久久免费的优势| 国产欧美日韩精品在线观看| 都市激情亚洲色图| 欧美黑人巨大精品一区二区|