首頁 >後端開發 >php教程 >Laravel框架實現分頁的分析

Laravel框架實現分頁的分析

不言
不言原創
2018-06-12 16:46:321578瀏覽

這篇文章主要介紹了Laravel框架分頁實現方法,結合實例形式分析了Laravel框架實現分頁功能的核心代碼及其相關原理,需要的朋友可以參考下

本文實例講述了Laravel框架分頁實作方法。分享給大家供大家參考,具體如下:

Laravel使用的過程中,有些功能把前端頁面的表達“寫死了”,比如分頁的翻頁按鈕!

當然你會說Laravel的Bootstrap樣式也很好看啊,但是實際專案中,翻頁按鈕常常需要滿足的客戶的需要,特別在開發一款支援手機適配的Web APP,更是需要使用自訂的樣式。

所以,學習一樣東西不能一知半解,而是究其原理。

先來看看Laravel是怎麼分頁的,生成分頁按鈕的程式碼究竟寫在哪裡?

Laravel目錄\vendor\laravel\framework\src\Illuminate\Pagination

先理一下類別的繼承關係

PresenterContract (父類別)
BootstrapThreePresenter(子類別)BootstrapThreePresenter
(子類別)<-SimpleBootstrapThreePresenterBootstrapFourPresenter

(子類別)<#┗

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產生的是帶有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(
        &#39;<ul class="pagination">%s %s %s</ul>&#39;,
        $this->getPreviousButton(),
        $this->getLinks(),
        $this->getNextButton()
      ));
    }
    return &#39;&#39;;
}

細心的讀者已經發覺,還有兩個繼承類,分別是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中文網!

相關推薦:

對於Laravel框架的生命週期與原理分析

Laravel框架的路由設定

###############

以上是Laravel框架實現分頁的分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn