この記事では主にLaravelフレームワークのページング実装方法を紹介し、Laravelフレームワークのコアコードと関連原理を分析してページング機能を実装する例を必要とする友人に参照してください
この記事の例では、Laravel Framework のページング実装方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。
Laravel を使用するプロセスでは、一部の関数はページング ボタンなどのフロントエンド ページの表現を「ハードコーディング」します。
もちろん、Laravel の Bootstrap スタイルも非常に美しいと言われるでしょうが、実際のプロジェクトでは、特に携帯電話への対応をサポートする Web APP を開発する場合、ページめくりボタンが顧客のニーズを満たす必要があることがよくあります。カスタムスタイル。
つまり、何かを学ぶときは、ただ理解するだけではなく、その原理を学ぶ必要があります。
まず、Laravel がページングを行う方法を見てみましょう。ページング ボタンを生成するコードはどこにあるでしょうか。
Laravel Directory\vendor\laravel\framework\src\Illuminate\PaginationNext
まずはクラスの継承関係を整理しましょう
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 はクラスを含む 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 ''; }
注意深い読者は次のことを発見しました。継承された 2 つのクラスは 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 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がLaravelフレームワークはページネーション分析を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。