Heim  >  Artikel  >  Backend-Entwicklung  >  Das Laravel-Framework implementiert die Paginierungsanalyse

Das Laravel-Framework implementiert die Paginierungsanalyse

不言
不言Original
2018-06-12 16:46:321540Durchsuche

Dieser Artikel stellt hauptsächlich die Paging-Implementierungsmethode des Laravel-Frameworks vor und analysiert den Kerncode und die zugehörigen Prinzipien der Paging-Funktion des Laravel-Frameworks in Form von Beispielen.

Die Beispiele für diesen Artikel beschreiben die Paging-Implementierungsmethode des Laravel Framework. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Bei der Verwendung von Laravel „codieren“ einige Funktionen den Ausdruck der Front-End-Seite fest, z. B. die Paging-Schaltfläche!

Natürlich werden Sie sagen, dass der Bootstrap-Stil von Laravel auch sehr schön ist, aber in tatsächlichen Projekten müssen Schaltflächen zum Umblättern häufig den Bedürfnissen der Kunden gerecht werden, insbesondere wenn eine Web-App entwickelt wird, die die Anpassung an Mobiltelefone erfordert benutzerdefinierte Stile.

Wenn Sie also etwas lernen, können Sie es nicht nur halbwegs verstehen, sondern auch seine Prinzipien studieren.

Werfen wir zunächst einen Blick darauf, wie Laravel Paging durchführt. Wo ist der Code zum Generieren von Paging-Schaltflächen?

Laravel DirectoryvendorlaravelframeworksrcIlluminatePaginationUnter

Lassen Sie uns zunächst die Vererbungsbeziehung der Klassen klären

PresenterContract(Elternklasse)
┗. BootstrapThreePresenter(Unterklasse)<-SimpleBootstrapThreePresenter
BootstrapFourPresenter(Unterklasse)<-SimpleBootstrapFourPresenter

Nach der Benennung der Klassen durch den Autor zu urteilen, müssen wir uns den Code von

BootstrapThreePresenter.php und BootstrapFourPresenter.php ansehen. Der Hauptunterschied liegt in der folgenden Funktion

BootstrapThreePresenter.php-Code:

/**
* 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-Code:

/**
* 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;;
}

Der Größte Der Unterschied, den wir fanden, lag fast bei ThreePresenter. Es handelt sich um ein „nacktes“ HTML-Tag, während FourPresenter ein HTML-Tag mit Klasse generiert.

Ob ThreePresenter oder FourPresenter, sie haben eine identisch implementierte render()-Funktion

/**
* 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;;
}

Aufmerksame Leser haben das entdeckt: Die beiden haben geerbt Die Klassen sind SimpleThreePresenter und SimpleFourPresenter. Da sie Simple (einfach) sind, liegt der Unterschied in ihrer render()-Funktion

/**
* 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;;
}

Mit anderen Worten, den generierten Paging-Schaltflächen von SimpleThreePresenter und SimpleFourPresenter haben keine „Seitenzahlen“, sondern nur die Schaltflächen „Vorherige Seite“ und „Nächste Seite“.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Analyse des Lebenszyklus und der Prinzipien des Laravel-Frameworks

Routing-Einstellungen des Laravel-Frameworks

Das obige ist der detaillierte Inhalt vonDas Laravel-Framework implementiert die Paginierungsanalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn