ホームページ  >  記事  >  バックエンド開発  >  Laravelフレームワークはページネーション分析を実装します

Laravelフレームワークはページネーション分析を実装します

不言
不言オリジナル
2018-06-12 16:46:321540ブラウズ

この記事では主に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) ? &#39;&#39; : &#39; rel="&#39;.$rel.&#39;"&#39;;
    return &#39;<li><a href="&#39;.htmlentities($url).&#39;" rel="external nofollow" rel="external nofollow" &#39;.$rel.&#39;>&#39;.$page.&#39;</a></li>&#39;;
}
/**
* Get HTML wrapper for disabled text.
*
* @param string $text
* @return string
*/
protected function getDisabledTextWrapper($text)
{
    return &#39;<li class="disabled"><span>&#39;.$text.&#39;</span></li>&#39;;
}
/**
* Get HTML wrapper for active text.
*
* @param string $text
* @return string
*/
protected function getActivePageWrapper($text)
{
    return &#39;<li class="active"><span>&#39;.$text.&#39;</span></li>&#39;;
}

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) ? &#39;&#39; : &#39; rel="&#39;.$rel.&#39;"&#39;;
    return &#39;<li class="page-item"><a class="page-link" href="&#39;.htmlentities($url).&#39;" rel="external nofollow" rel="external nofollow" &#39;.$rel.&#39;>&#39;.$page.&#39;</a></li>&#39;;
}
/**
* Get HTML wrapper for disabled text.
*
* @param string $text
* @return string
*/
protected function getDisabledTextWrapper($text)
{
    return &#39;<li class="page-item disabled"><a class="page-link">&#39;.$text.&#39;</a></li>&#39;;
}
/**
* Get HTML wrapper for active text.
*
* @param string $text
* @return string
*/
protected function getActivePageWrapper($text)
{
    return &#39;<li class="page-item active"><a class="page-link">&#39;.$text.&#39;</a></li>&#39;;
}

最大の違いは、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(
        &#39;<ul class="pagination">%s %s %s</ul>&#39;,
        $this->getPreviousButton(),
        $this->getLinks(),
        $this->getNextButton()
      ));
    }
    return &#39;&#39;;
}

注意深い読者は次のことを発見しました。継承された 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(
        &#39;<ul class="pager">%s %s</ul>&#39;,
        $this->getPreviousButton(),
        $this->getNextButton()
      ));
    }
    return &#39;&#39;;
}

つまり、 SimpleThreePresenter および SimpleFourPresenter によって生成されるページング ボタンには「ページ番号」はなく、「前ページ」ボタンと「次ページ」ボタンのみがあります。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel フレームワークのライフサイクルと原則の分析

Laravel フレームワークのルーティング設定

以上がLaravelフレームワークはページネーション分析を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。