Maison> cadre php> PensezPHP> le corps du texte

pagination personnalisée thinkphp

Libérer: 2020-04-10 09:02:17
avant
3046 Les gens l'ont consulté

ThinkPHP5.1 a une implémentation de pagination intégrée. Il est très simple d'ajouter une fonction de sortie de pagination aux données. Vous pouvez appeler directement la méthode paginate lors de l'interrogation de la classe Db. Cet article explique comment personnaliser les styles de pagination dans thinkphp.

pagination personnalisée thinkphp

thinkphp5.1 a une classe de pagination très pratique Vous pouvez utiliser la méthode render pour afficher le code HTML de pagination

Mais le "<< " Une page et la page suivante telle que ">>" ne peuvent parfois pas répondre aux besoins changeants du projet. Il est nécessaire de définir vous-même l'affichage de la pagination, comme

Page d'accueil Page précédente 1 2 3 ... 7 8 Page suivante Dernière page

De cette façon, cependant, le manuel officiel ne mentionne pas la méthode de personnalisation du style de pagination. Dans un premier temps, j'ai simplement remplacé le html de la pagination par le texte du précédent. page et la page suivante

Plus tard, j'ai découvert que je pouvais définir moi-même une classe pour remplir cette exigence. Tout d'abord, je dois créer paginate.php dans le répertoire de configuration, le contenu du fichier est

'app\index\pager\gcudPager'//自己的分页类可以随便放,只要命名空间写对 ];
Copier après la connexion
<. > puis copiez "répertoire du projet thinkphplibrarythinkpaginatordriverBootstrap.php" vers n'importe quel emplacement, changez l'espace de noms, changez le type de paginate.php en l'espace de noms correspondant, par exemple, j'ai copié le fichier dans le "répertoire du projet applicationindexpagergcudPager.php", ce qui précède type correspond également à ce chemin, puis changez l'espace de noms Il est devenu "appindexpager", et le nom de la classe correspondante a été changé en gcudPager, afin que vous puissiez définir vous-même la forme de pagination

J'ai suivi l'implémentation de la page d'accueil de la page précédente, copié son code, et l'a légèrement modifié

/**首页按钮 * @param string $text * @return string */ protected function GetFirstButton($text='首页'){ if ($this->currentPage() <= 1) { return $this->getDisabledTextWrapper($text); } $url = $this->url(1); return $this->getPageLinkWrapper($url, $text); }
Copier après la connexion

La logique est très simple, il s'agit de déterminer le numéro de page actuel et de mettre manuellement la variable numéro de page à 1. De la même manière , vous pouvez copier le code de la page suivante et le remplacer par la dernière page

/**末页按钮 * @param string $text * @return string */ protected function GetLastButton($text='末页'){ if (!$this->hasMore) { return $this->getDisabledTextWrapper($text); } $url = $this->url($this->lastPage()); return $this->getPageLinkWrapper($url, $text); }
Copier après la connexion

Autre précédent La page suivante consiste à modifier le texte C'est trop simple pour ne pas le mentionner. les boutons de la page d'accueil et de la dernière page

/** * 渲染分页html * @return mixed */ public function render() { if ($this->hasPages()) { if ($this->simple) { return sprintf( '
    %s %s
', $this->getPreviousButton(), $this->getNextButton() ); } else { return sprintf( '
%s %s %s %s %s
', $this->GetFirstButton(), $this->getPreviousButton(), $this->getLinks(), $this->getNextButton(), $this->GetLastButton() ); } } }
Copier après la connexion

C'est tout Il n'est pas du tout nécessaire de changer la partie appelante. Enfin, mettez le code complet

         // +---------------------------------------------------------------------- namespace app\index\pager; use think\Paginator; class gcudPager extends Paginator { /**首页按钮 * @param string $text * @return string */ protected function GetFirstButton($text='首页'){ if ($this->currentPage() <= 1) { return $this->getDisabledTextWrapper($text); } $url = $this->url(1); return $this->getPageLinkWrapper($url, $text); } /** * 上一页按钮 * @param string $text * @return string */ protected function getPreviousButton($text = "上一页") { if ($this->currentPage() <= 1) { return $this->getDisabledTextWrapper($text); } $url = $this->url( $this->currentPage() - 1 ); return $this->getPageLinkWrapper($url, $text); } /**末页按钮 * @param string $text * @return string */ protected function GetLastButton($text='末页'){ if (!$this->hasMore) { return $this->getDisabledTextWrapper($text); } $url = $this->url($this->lastPage()); return $this->getPageLinkWrapper($url, $text); } /** * 下一页按钮 * @param string $text * @return string */ protected function getNextButton($text = '下一页') { if (!$this->hasMore) { return $this->getDisabledTextWrapper($text); } $url = $this->url($this->currentPage() + 1); return $this->getPageLinkWrapper($url, $text); } /** * 页码按钮 * @return string */ protected function getLinks() { if ($this->simple) { return ''; } $block = [ 'first' => null, 'slider' => null, 'last' => null, ]; $side = 3; $window = $side * 2; if ($this->lastPage < $window + 6) { $block['first'] = $this->getUrlRange(1, $this->lastPage); } elseif ($this->currentPage <= $window) { $block['first'] = $this->getUrlRange(1, $window + 2); $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); } elseif ($this->currentPage > ($this->lastPage - $window)) { $block['first'] = $this->getUrlRange(1, 2); $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage); } else { $block['first'] = $this->getUrlRange(1, 2); $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side); $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); } $html = ''; if (is_array($block['first'])) { $html .= $this->getUrlLinks($block['first']); } if (is_array($block['slider'])) { $html .= $this->getDots(); $html .= $this->getUrlLinks($block['slider']); } if (is_array($block['last'])) { $html .= $this->getDots(); $html .= $this->getUrlLinks($block['last']); } return $html; } /** * 渲染分页html * @return mixed */ public function render() { if ($this->hasPages()) { if ($this->simple) { return sprintf( '
    %s %s
', $this->getPreviousButton(), $this->getNextButton() ); } else { return sprintf( '
%s %s %s %s %s
', $this->GetFirstButton(), $this->getPreviousButton(), $this->getLinks(), $this->getNextButton(), $this->GetLastButton() ); } } } /** * 生成一个可点击的按钮 * * @param string $url * @param int $page * @return string */ protected function getAvailablePageWrapper($url, $page) { return '' . $page . ''; } /** * 生成一个禁用的按钮 * * @param string $text * @return string */ protected function getDisabledTextWrapper($text) { return '' . $text . ''; } /** * 生成一个激活的按钮 * * @param string $text * @return string */ protected function getActivePageWrapper($text) { return '' . $text . ''; } /** * 生成省略号按钮 * * @return string */ protected function getDots() { return $this->getDisabledTextWrapper('...'); } /** * 批量生成页码按钮. * * @param array $urls * @return string */ protected function getUrlLinks(array $urls) { $html = ''; foreach ($urls as $page => $url) { $html .= $this->getPageLinkWrapper($url, $page); } return $html; } /** * 生成普通页码按钮 * * @param string $url * @param int $page * @return string */ protected function getPageLinkWrapper($url, $page) { if ($this->currentPage() == $page) { return $this->getActivePageWrapper($page); } return $this->getAvailablePageWrapper($url, $page); } }
Copier après la connexion
Tutoriel recommandé :

tutoriel thinkphp.

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!

Étiquettes associées:
source:oschina.net
Déclaration de ce site Web
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!