CakePHP でカスタム ページネーションを作成するにはどうすればよいですか?

WBOY
リリース: 2023-06-04 08:52:01
オリジナル
981 人が閲覧しました

CakePHP は、開発者に多くの便利なツールと機能を提供する強力な PHP フレームワークです。その 1 つはページネーションです。これは、大量のデータを複数のページに分割し、閲覧と操作を容易にするのに役立ちます。

デフォルトでは、CakePHP はいくつかの基本的なページネーション メソッドを提供しますが、場合によってはカスタムのページネーション メソッドを作成する必要があるかもしれません。この記事では、CakePHP でカスタム ページネーションを作成する方法を説明します。

ステップ 1: カスタム ページング クラスを作成する

まず、カスタム ページング クラスを作成する必要があります。このクラスは、すべてのページング関連ロジックの処理を担当します。 app/Lib/Utility ディレクトリに CustomPaginator.php という名前の新しいファイルを作成し、次のコードをファイルに追加します。

Controller->request->params['named']['page']) ? $this->Controller->request->params['named']['page'] : 1; // Set the default pagination values $perPage = 10; $start = ($page - 1) * $perPage; // Get the total count of records $count = $object->find('count', array('conditions' => $scope)); // Build the pagination data $result = array( 'count' => $count, 'perPage' => $perPage, 'page' => $page, 'totalPages' => ceil($count / $perPage), 'start' => $start, 'end' => ($start + $perPage) > $count ? $count : ($start + $perPage - 1), 'hasPrevPage' => $page > 1, 'hasNextPage' => ($start + $perPage) < $count ); // Set the pagination data in the controller $this->Controller->set('paging', $result); // Return the paginated records return $object->find('all', array('conditions' => $scope, 'limit' => $perPage, 'offset' => $start)); } }
ログイン後にコピー

このカスタム ページネーション クラスは、CakePHP のデフォルトのページネーション クラス PaginatorComponent に基づいています。 paginate() メソッドをオーバーライドして、カスタム ページネーション ロジックを実装しました。次のパラメータを取ります:

  • $object: ページ分割されるモデル オブジェクト。
  • $scope: クエリ条件。ページ分割されるレコードをフィルタリングするために使用されます。
  • $whitelist: 特定のクエリ パラメーターを許可または拒否するために使用されるホワイトリスト配列

実装では、最初に現在のページの番号を取得し、次にページごとのデフォルトを設定します。レコード数と開始レコード番号。次に、find() メソッドを使用してレコードの合計数を取得し、ページの合計数と終了レコードの数を計算します。最後に、すべてのページング データをコントローラーの「paging」変数に設定し、ページ分割されたレコードを返します。

ステップ 2: カスタム ページング クラスをインスタンス化する

カスタム ページング クラスを作成したので、コントローラーでそれをインスタンス化する必要があります。これを行うには、次のコードをコントローラーに追加する必要があります。

set('users', $this->CustomPaginator->paginate($this->User)); } }
ログイン後にコピー

App::uses() を使用してカスタム ページネーション クラスを読み込み、コントローラー内でインスタンス化します。また、$components 属性と $paginate 属性を使用して、カスタム ページネーション クラスをコントローラーに追加しました。

index() アクションでは、$CustomPaginator->paginate() を呼び出し、User モデル オブジェクトをそれに渡します。次に、ページ分割されたユーザー データをビュー変数に設定します。

ステップ 3: ページ分割されたビューの作成

最後に、ページ分割されたデータを表示するビューを作成する必要があります。次のコードを「views/users/index.ctp」ファイルに追加します。

Users

ログイン後にコピー

このビューは単なるユーザーの単純なリストであり、ページ分割されたナビゲーション リンクが表示されます。

PaginatorHelper の prev()、numbers()、next() メソッドを使用してナビゲーション リンクを生成します。これらのメソッドは、コントローラーで定義した「$CustomPaginator」コンポーネントに基づいてリンクを生成します。

結論

カスタム ページネーションを使用すると、特定のニーズを満たすためのより優れた制御と柔軟性が得られます。この記事では、CakePHP でカスタム ページネーションを作成する方法を説明します。この知識を応用して、よりカスタマイズされたアプリケーションを開発できるようになりました。

以上がCakePHP でカスタム ページネーションを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!