這篇文章主要介紹了Laravel框架分頁實現方法,結合實例形式分析了Laravel框架實現分頁功能的核心代碼及其相關原理,需要的朋友可以參考下
本文實例講述了Laravel框架分頁實作方法。分享給大家供大家參考,具體如下:
Laravel使用的過程中,有些功能把前端頁面的表達“寫死了”,比如分頁的翻頁按鈕!
當然你會說Laravel的Bootstrap樣式也很好看啊,但是實際專案中,翻頁按鈕常常需要滿足的客戶的需要,特別在開發一款支援手機適配的Web APP,更是需要使用自訂的樣式。
所以,學習一樣東西不能一知半解,而是究其原理。
先來看看Laravel是怎麼分頁的,生成分頁按鈕的程式碼究竟寫在哪裡?
Laravel目錄\vendor\laravel\framework\src\Illuminate\Pagination下
先理一下類別的繼承關係
PresenterContract (父類別)
┗BootstrapThreePresenter(子類別)┗BootstrapThreePresenter
(子類別)<-SimpleBootstrapThreePresenter┗BootstrapFourPresenter
BootstrapFourPresenter
(子類別)<#SimpleBootstrapFourPresenter
從作者對類別的命名上看,必有區別,我們從程式碼上研究BootstrapThreePresenter.php和BootstrapFourPresenter.php主要區別在下列函數BootstrapThreePresenter.php程式碼:/** * Get HTML wrapper for an available page link. * * @param string $url * @param int $page * @param string|null $rel * @return string */ protected function getAvailablePageWrapper($url, $page, $rel = null) { $rel = is_null($rel) ? '' : ' rel="'.$rel.'"'; return '<li><a href="'.htmlentities($url).'" rel="external nofollow" rel="external nofollow" '.$rel.'>'.$page.'</a></li>'; } /** * Get HTML wrapper for disabled text. * * @param string $text * @return string */ protected function getDisabledTextWrapper($text) { return '<li class="disabled"><span>'.$text.'</span></li>'; } /** * Get HTML wrapper for active text. * * @param string $text * @return string */ protected function getActivePageWrapper($text) { return '<li class="active"><span>'.$text.'</span></li>'; }BootstrapFourPresenter.php程式碼:
#
/** * Get HTML wrapper for an available page link. * * @param string $url * @param int $page * @param string|null $rel * @return string */ protected function getAvailablePageWrapper($url, $page, $rel = null) { $rel = is_null($rel) ? '' : ' rel="'.$rel.'"'; return '<li class="page-item"><a class="page-link" href="'.htmlentities($url).'" rel="external nofollow" rel="external nofollow" '.$rel.'>'.$page.'</a></li>'; } /** * Get HTML wrapper for disabled text. * * @param string $text * @return string */ protected function getDisabledTextWrapper($text) { return '<li class="page-item disabled"><a class="page-link">'.$text.'</a></li>'; } /** * Get HTML wrapper for active text. * * @param string $text * @return string */ protected function getActivePageWrapper($text) { return '<li class="page-item active"><a class="page-link">'.$text.'</a></li>'; }
我們發現最大的差異在ThreePresenter幾乎是「裸」HTML標籤,而FourPresenter產生的是帶有class的HTML標籤。 無論是ThreePresenter還是FourPresenter,他們都有一個相同實現的render()函數
/** * Convert the URL window into Bootstrap HTML. * * @return \Illuminate\Support\HtmlString */ public function render() { if ($this->hasPages()) { return new HtmlString(sprintf( '<ul class="pagination">%s %s %s</ul>', $this->getPreviousButton(), $this->getLinks(), $this->getNextButton() )); } return ''; }細心的讀者已經發覺,還有兩個繼承類,分別是SimpleThreePresenter和SimpleFourPresenter,既然是Simple(簡單),差異就在他們的render()函數
/** * Convert the URL window into Bootstrap HTML. * * @return \Illuminate\Support\HtmlString */ public function render() { if ($this->hasPages()) { return new HtmlString(sprintf( '<ul class="pager">%s %s</ul>', $this->getPreviousButton(), $this->getNextButton() )); } return ''; }#也就是說, SimpleThreePresenter和SimpleFourPresenter產生的分頁按鈕是沒有「頁碼」的,只有「上一頁」和「下一頁」按鈕。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦: Laravel框架的路由設定###############
以上是Laravel框架實現分頁的分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!