Maison  >  Article  >  développement back-end  >  Le framework Laravel implémente l'analyse de pagination

Le framework Laravel implémente l'analyse de pagination

不言
不言original
2018-06-12 16:46:321486parcourir

Cet article présente principalement la méthode d'implémentation de pagination du framework Laravel et analyse le code de base et les principes associés de la fonction de pagination du framework Laravel sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Le. des exemples de cet article décrivent la méthode d'implémentation de la pagination du Laravel Framework. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Dans le processus d'utilisation de Laravel, certaines fonctions "codent en dur" l'expression de la page front-end, comme le bouton de pagination !

Bien sûr, vous direz que le style Bootstrap de Laravel est également très beau, mais dans les projets réels, les boutons de changement de page doivent souvent répondre aux besoins des clients, en particulier lors du développement d'une application Web prenant en charge l'adaptation du téléphone mobile. styles personnalisés.

Ainsi, lorsque vous apprenez quelque chose, vous ne pouvez pas simplement le comprendre, mais étudier ses principes.

Voyons d'abord comment Laravel effectue la pagination. Où est le code pour générer les boutons de pagination ?

Laravel DirectoryvendorlaravelframeworksrcIlluminatePaginationUnder

Traitons d'abord de la relation d'héritage des classes

PresenterContract(classe parent)
BootstrapThreePresenter(sous-classe)<-SimpleBootstrapThreePresenter
BootstrapFourPresenter(sous-classe)<-SimpleBootstrapFourPresenter

À en juger par le nom des classes donné par l'auteur, il doit y avoir des différences. Étudions le code. La principale différence entre

BootstrapThreePresenter.php et BootstrapFourPresenter.php réside dans la fonction suivante

Code 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;;
}

Code 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;;
}

Nous avons trouvé la plus grande. La différence est que ThreePresenter est presque une balise HTML "nue", tandis que FourPresenter génère des balises HTML avec des classes.

Qu'il s'agisse de ThreePresenter ou de FourPresenter, ils ont une fonction render() implémentée de manière identique

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

Les lecteurs attentifs ont remarqué que, là sont également deux classes héritées, à savoir SimpleThreePresenter et SimpleFourPresenter. Puisqu'elles sont Simple (simples), la différence réside dans leur fonction 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;;
}

In. en d'autres termes, les boutons de pagination générés par SimpleThreePresenter et SimpleFourPresenter n'ont pas de « numéros de page », seulement des boutons « page précédente » et « page suivante ».

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Analyse du cycle de vie et des principes du framework Laravel

Paramètres de routage du framework Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn