Maison > cadre php > PensezPHP > le corps du texte

Comment implémenter la fonction de pagination de ThinkPHP6

WBOY
Libérer: 2023-06-20 21:15:14
original
2627 Les gens l'ont consulté

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.

  1. Installer le composant Pagination

ThinkPHP6 fournit un composant Pagination, vous devez ajouter le code suivant au fichier composer.json : #🎜🎜 #

"require": {
    "topthink/think-pagination": "^1.0"
}
Copier après la connexion

Ensuite, utilisez la commande composer update pour installer le composant.

    composer update安装组件。

    1. 在控制器中使用分页

    在控制器中使用分页的步骤如下:

    首先,获取数据表中的记录总数。使用以下代码:

    $total = Db::name('user')->count();
    Copier après la connexion

    其中,Db是ThinkPHP6中的数据库操作类,name('user')表示获取user表的数据,count()表示获取数据总数。

    接下来,设置每页显示的记录数和当前页码数。使用以下代码:

    $pageSize = 10;   //每页显示10条记录
    $pageNo = 1;      //默认显示第1页
    if (!empty($_GET['page'])) {
        $pageNo = intval($_GET['page']);   //获取当前页码数
    }
    Copier après la connexion

    其中,intval()函数用于将字符串转换为整数。

    接着,根据每页显示的记录数和当前页码数计算出需要显示的记录范围。使用以下代码:

    $offset = ($pageNo - 1) * $pageSize;
    $rows = Db::name('user')->limit($offset, $pageSize)->select();
    Copier après la connexion

    其中,limit()方法用于限制查询结果的范围,第一个参数表示偏移量,第二个参数表示获取的记录数。

    最后,将获取的记录传递给视图,并调用Pagination组件进行分页显示。使用以下代码:

    $this->assign('rows', $rows);
    $this->assign('total', $total);
    $this->assign('pageSize', $pageSize);
    $this->assign('pageNo', $pageNo);
    return $this->fetch()->extend('pagination');
    Copier après la connexion

    其中,assign()方法用于传递变量给模板,fetch()方法用于调用模板文件,extend('pagination')表示使用Pagination组件进行分页显示。

    1. 在视图中实现分页

    在视图文件中实现分页的步骤如下:

    首先,在页面底部显示分页栏。使用以下代码:

    <div class="pagination">
        {$page->render()}
    </div>
    Copier après la connexion

    其中,$page表示Pagination实例,render()方法用于生成分页HTML代码。

    接着,设置分页样式。使用以下代码:

        hinkacadeView::getPager()->setConfig('prev', '上一页');
        hinkacadeView::getPager()->setConfig('next', '下一页');
        hinkacadeView::getPager()->setConfig('theme', '%totalRow% %header% %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%');
    Copier après la connexion

    其中,setConfig()方法用于设置分页样式。%totalRow%表示显示总记录数,%header%表示当前页码,%upPage%表示上一页,%downPage%表示下一页,%first%表示第一页,%prePage%表示上一组页码,%linkPage%表示当前页码组,%nextPage%表示下一组页码,%end%表示最后一页。

    注意:在设置分页样式之前,需要调用use thinkPaginator;Utilisation de la pagination dans le contrôleur

    1. Les étapes pour utiliser la pagination dans le contrôleur sont les suivantes :
    2. # 🎜 🎜#Tout d'abord, obtenez le nombre total d'enregistrements dans le tableau de données. Utilisez le code suivant :
    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);
                hinkacadeView::getPager()->setConfig('prev', '上一页');
                hinkacadeView::getPager()->setConfig('next', '下一页');
                hinkacadeView::getPager()->setConfig('theme', '%totalRow% %header% %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%');
            return $this->fetch()->extend('pagination');
        }
    }
    Copier après la connexion

    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 :

    rrreee

    Parmi 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. #🎜🎜#
      #🎜🎜# Implémenter la pagination dans la vue #🎜🎜##🎜🎜##🎜🎜#Les étapes pour implémenter la pagination dans le fichier de vue sont les suivantes : #🎜🎜# #🎜🎜 #Tout d'abord, affichez la barre de pagination en bas de la page. Utilisez le code suivant : #🎜🎜#rrreee#🎜🎜#Où, $page représente l'instance de Pagination et la méthode render() est utilisée pour générer du code HTML de pagination. #🎜🎜##🎜🎜#Ensuite, définissez le style de pagination. Utilisez le code suivant : #🎜🎜#rrreee#🎜🎜#Parmi eux, la méthode setConfig() est utilisée pour définir le style de pagination. %totalRow% représente le nombre total d'enregistrements affichés, %header% représente le numéro de la page actuelle, %upPage% représente la page précédente, %downPage% représente la page suivante, %first% représente la première page, %prePage% représente la précédente numéro de page, % linkPage% représente le groupe de numéros de page actuel, %nextPage% représente le groupe suivant de numéros de page et %end% représente la dernière page. #🎜🎜##🎜🎜#Remarque : Avant de définir le style de pagination, vous devez appeler l'espace de noms 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal