ThinkPHP est un framework de développement PHP très populaire, et sa dernière version, ThinkPHP6, a été grandement améliorée en termes de performances et de facilité d'utilisation. La fonction de pagination est une fonction très courante dans le développement Web, et ThinkPHP6 fournit également une méthode de pagination très pratique. Cet article expliquera comment implémenter la fonction de pagination de ThinkPHP6.
1. Comprendre la fonction de pagination
Dans les applications Web, lorsque l'ensemble de données est très volumineux, l'affichage de tous les résultats sur une seule page entraînera un chargement trop rapide de la page. lent et peu pratique pour les utilisateurs d’afficher et de gérer les données. La fonction de pagination consiste à diviser l'ensemble de données en plusieurs pages, et chaque page n'affiche qu'une partie des données. Cela peut réduire considérablement le temps de chargement des pages, tout en permettant aux utilisateurs de parcourir et de gérer plus facilement les données.
2. Implémentez la fonction de pagination de ThinkPHP6
ThinkPHP6 fournit une méthode de pagination très pratique, qui peut être implémentée en quelques étapes simples.
ThinkPHP6 fournit un composant Pagination, vous devez ajouter le code suivant au fichier composer.json : #🎜🎜 #
"require": { "topthink/think-pagination": "^1.0" }
composer update
pour installer le composant. composer update
安装组件。在控制器中使用分页的步骤如下:
首先,获取数据表中的记录总数。使用以下代码:
$total = Db::name('user')->count();
其中,Db是ThinkPHP6中的数据库操作类,name('user')表示获取user表的数据,count()表示获取数据总数。
接下来,设置每页显示的记录数和当前页码数。使用以下代码:
$pageSize = 10; //每页显示10条记录 $pageNo = 1; //默认显示第1页 if (!empty($_GET['page'])) { $pageNo = intval($_GET['page']); //获取当前页码数 }
其中,intval()函数用于将字符串转换为整数。
接着,根据每页显示的记录数和当前页码数计算出需要显示的记录范围。使用以下代码:
$offset = ($pageNo - 1) * $pageSize; $rows = Db::name('user')->limit($offset, $pageSize)->select();
其中,limit()方法用于限制查询结果的范围,第一个参数表示偏移量,第二个参数表示获取的记录数。
最后,将获取的记录传递给视图,并调用Pagination组件进行分页显示。使用以下代码:
$this->assign('rows', $rows); $this->assign('total', $total); $this->assign('pageSize', $pageSize); $this->assign('pageNo', $pageNo); return $this->fetch()->extend('pagination');
其中,assign()方法用于传递变量给模板,fetch()方法用于调用模板文件,extend('pagination')表示使用Pagination组件进行分页显示。
在视图文件中实现分页的步骤如下:
首先,在页面底部显示分页栏。使用以下代码:
<div class="pagination"> {$page->render()} </div>
其中,$page表示Pagination实例,render()方法用于生成分页HTML代码。
接着,设置分页样式。使用以下代码:
hinkacadeView::getPager()->setConfig('prev', '上一页'); hinkacadeView::getPager()->setConfig('next', '下一页'); hinkacadeView::getPager()->setConfig('theme', '%totalRow% %header% %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%');
其中,setConfig()方法用于设置分页样式。%totalRow%表示显示总记录数,%header%表示当前页码,%upPage%表示上一页,%downPage%表示下一页,%first%表示第一页,%prePage%表示上一组页码,%linkPage%表示当前页码组,%nextPage%表示下一组页码,%end%表示最后一页。
注意:在设置分页样式之前,需要调用use thinkPaginator;
Utilisation de la pagination dans le contrôleur
use thinkDb; use thinkPaginator; class UserController extends Controller { public function index() { $total = Db::name('user')->count(); $pageSize = 10; //每页显示10条记录 $pageNo = 1; //默认显示第1页 if (!empty($_GET['page'])) { $pageNo = intval($_GET['page']); //获取当前页码数 } $offset = ($pageNo - 1) * $pageSize; $rows = Db::name('user')->limit($offset, $pageSize)->select(); $this->assign('rows', $rows); $this->assign('total', $total); $this->assign('pageSize', $pageSize); $this->assign('pageNo', $pageNo); Paginator::useBootstrap(); Paginator::currentPageResolver(function () use ($pageNo) { return $pageNo; }); Paginator::pagination($total, $pageSize, $pageNo); hinkacadeView::getPager()->setConfig('prev', '上一页'); hinkacadeView::getPager()->setConfig('next', '下一页'); hinkacadeView::getPager()->setConfig('theme', '%totalRow% %header% %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'); return $this->fetch()->extend('pagination'); } }
Parmi eux, Db est la classe d'opération de base de données dans ThinkPHP6, name('user') signifie obtenir les données de la table utilisateur et count() signifie obtenir le nombre total de données.
Ensuite, définissez le nombre d'enregistrements affichés sur chaque page et le numéro de la page actuelle. Utilisez le code suivant :
rrreeeParmi eux, la fonction intval() est utilisée pour convertir une chaîne en entier.
#🎜🎜#Ensuite, calculez la plage d'enregistrements qui doit être affichée en fonction du nombre d'enregistrements affichés sur chaque page et du numéro de page actuel. Utilisez le code suivant : #🎜🎜#rrreee#🎜🎜#Parmi eux, la méthode limit() est utilisée pour limiter la plage des résultats de la requête. Le premier paramètre représente le décalage et le deuxième paramètre représente le nombre d'enregistrements obtenus. #🎜🎜##🎜🎜#Enfin, transmettez les enregistrements obtenus à la vue et appelez le composant Pagination pour l'affichage de la pagination. Utilisez le code suivant : #🎜🎜#rrreee#🎜🎜#Parmi eux, la méthode assign() est utilisée pour transmettre des variables au modèle, la méthode fetch() est utilisée pour appeler le fichier modèle, et extend('pagination' ) signifie utiliser le composant Pagination pour l'affichage de la pagination. #🎜🎜#use thinkPaginator;
. #🎜🎜##🎜🎜##🎜🎜#Exemple de code complet#🎜🎜##🎜🎜##🎜🎜#Ce qui suit est un exemple de code complet pour implémenter la fonction de pagination de ThinkPHP6 : #🎜🎜#rrreee#🎜🎜 # 3. Résumé#🎜🎜##🎜🎜#Grâce aux étapes ci-dessus, nous avons implémenté avec succès la fonction de pagination de ThinkPHP6. Je pense que grâce à l'introduction de cet article, les lecteurs peuvent facilement ajouter des fonctions de pagination à leurs sites Web et améliorer l'expérience utilisateur du site Web. #🎜🎜#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!