ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP6のページング機能の実装方法
ThinkPHP は非常に人気のある PHP 開発フレームワークであり、その最新バージョンである ThinkPHP6 は、パフォーマンスと使いやすさの点で大幅に向上しています。ページング機能は Web 開発では非常に一般的な機能であり、ThinkPHP6 も非常に便利なページング方法を提供します。この記事では、ThinkPHP6のページング機能の実装方法を紹介します。
1. ページング機能を理解する
Web アプリケーションでは、データ セットが非常に大きい場合、すべての結果を 1 ページに表示するとページの読み込みが遅くなりすぎ、ページの読み込みが遅くなり、ユーザーがデータを表示および管理するのが不便になります。ページング機能とは、データセットを複数のページに分割し、各ページにデータの一部のみを表示する機能です。これにより、ページの読み込み時間を大幅に短縮できると同時に、ユーザーによるデータの閲覧と管理が容易になります。
2. ThinkPHP6 のページング機能を実装する
ThinkPHP6 は、ほんの数ステップで実装できる非常に便利なページング メソッドを提供します。
ThinkPHP6 にはページネーション コンポーネントが用意されています。次のコードをcomposer.json ファイルに追加する必要があります:
"require": { "topthink/think-pagination": "^1.0" }
次に、次のコードを使用します。コマンドcomposer update
コンポーネントをインストールします。
コントローラーでページングを使用する手順は次のとおりです。
最初に、レコードの合計数を取得します。データテーブル。次のコードを使用します。
$total = Db::name('user')->count();
このうち、Db は ThinkPHP6 のデータベース操作クラス、name('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() メソッドはクエリ結果の範囲を制限するために使用されます。最初のパラメータはオフセットを表し、2 番目のパラメータは取得されるレコードの数を表します。
最後に、取得したレコードをビューに渡し、ページング表示のための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;
名前空間を呼び出す必要があります。
以下は、ThinkPHP6:
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'); } }
3 のページング機能を実装するための完全なコード例です。 ##合格 上記の手順で、ThinkPHP6 のページング機能の実装に成功しました。この記事での紹介を通じて、読者は自分の Web サイトにページング機能を簡単に追加し、Web サイトのユーザー エクスペリエンスを向上させることができると思います。
以上がThinkPHP6のページング機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。