ThinkPHP6のページング機能の実装方法

WBOY
リリース: 2023-06-20 21:15:14
オリジナル
2625 人が閲覧しました

ThinkPHP は非常に人気のある PHP 開発フレームワークであり、その最新バージョンである ThinkPHP6 は、パフォーマンスと使いやすさの点で大幅に向上しています。ページング機能は Web 開発では非常に一般的な機能であり、ThinkPHP6 も非常に便利なページング方法を提供します。この記事では、ThinkPHP6のページング機能の実装方法を紹介します。

1. ページング機能を理解する

Web アプリケーションでは、データ セットが非常に大きい場合、すべての結果を 1 ページに表示するとページの読み込みが遅くなりすぎ、ページの読み込みが遅くなり、ユーザーがデータを表示および管理するのが不便になります。ページング機能とは、データセットを複数のページに分割し、各ページにデータの一部のみを表示する機能です。これにより、ページの読み込み時間を大幅に短縮できると同時に、ユーザーによるデータの閲覧と管理が容易になります。

2. ThinkPHP6 のページング機能を実装する

ThinkPHP6 は、ほんの数ステップで実装できる非常に便利なページング メソッドを提供します。

  1. ページネーション コンポーネントのインストール

ThinkPHP6 にはページネーション コンポーネントが用意されています。次のコードをcomposer.json ファイルに追加する必要があります:

"require": {
    "topthink/think-pagination": "^1.0"
}
ログイン後にコピー

次に、次のコードを使用します。コマンドcomposer updateコンポーネントをインストールします。

  1. コントローラーでのページングの使用

コントローラーでページングを使用する手順は次のとおりです。

最初に、レコードの合計数を取得します。データテーブル。次のコードを使用します。

$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 コンポーネントを使用します。

  1. ビューにページングを実装する

ビュー ファイルにページングを実装する手順は次のとおりです。

まず、ビュー ファイルにページング バーを表示します。ページの下。次のコードを使用します。

<div class="pagination">
    {$page->render()}
</div>
ログイン後にコピー

このうち、$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%');
ログイン後にコピー

その中で、setConfig() メソッドはページング スタイルを設定するために使用されます。 %totalRow% は表示されるレコードの合計数を表し、%header% は現在のページ番号を表し、%upPage% は前のページを表し、%downPage% は次のページを表し、%first% は最初のページを表し、%prePage% は前のページを表します。ページ番号、% linkPage% は現在のページ番号グループを表し、%nextPage% は次のページ番号グループを表し、%end% は最後のページを表します。

注: ページング スタイルを設定する前に、use thinkPaginator; 名前空間を呼び出す必要があります。

  1. 完全なコード例

以下は、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);
            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');
    }
}
ログイン後にコピー

3 のページング機能を実装するための完全なコード例です。 ##合格 上記の手順で、ThinkPHP6 のページング機能の実装に成功しました。この記事での紹介を通じて、読者は自分の Web サイトにページング機能を簡単に追加し、Web サイトのユーザー エクスペリエンスを向上させることができると思います。

以上がThinkPHP6のページング機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート