您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關使用Laravel框架怎么實現一個分頁功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Laravel使用的過程中,有些功能把前端頁面的表達“寫死了”,比如分頁的翻頁按鈕!
當然你會說Laravel的Bootstrap樣式也很好看啊,但是實際項目中,翻頁按鈕常常需要滿足的客戶的需要,特別在開發一款支持手機適配的Web APP,更是需要使用自定義的樣式。
所以,學習一樣東西不能一知半解,而是究其原理。
先來看看Laravel是怎么分頁的,生成分頁按鈕的代碼究竟寫在了哪里?
Laravel目錄\vendor\laravel\framework\src\Illuminate\Pagination下
先理一下類的繼承關系
PresenterContract(父類)
┗BootstrapThreePresenter(子類)<-SimpleBootstrapThreePresenter
┗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 ''; }
以上就是使用Laravel框架怎么實現一個分頁功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。