参考にさせて頂いたページ
Paginatorコンポーネント
ページ制御 — CakePHP Cookbook 2.x ドキュメント
Paginatorヘルパー
PaginatorHelper — CakePHP Cookbook 2.x ドキュメント
Controller側の記述
まず以下の通り、Paginatorコンポーネントを使用する事を宣言する。
public $components = array('Paginator');
次にactionの中で、例えば以下のような感じで設定と取得をする。
連想配列のキーは他にもありますし、値もご自分の環境に合わせてください。
//ページネーターcomponentの設定 $this->Paginator->settings = array( 'Article' => array( 'limit' => 1, 'order' => array('id' => 'asc'), 'conditions' => array( 'Article.user_id' => $user['id'], ), ) ); //上記の設定を元にデータを取得 $datas = $this->paginate();
View側の記述
ソート用のa要素を出力するヘルパー
例としてArticleモデルのidフィールドでソートするリンクは以下の通り。
<?php echo $this->Paginator->sort( 'id',//ソートに利用するフィールド '<div>id順にソートする</div>',//表示される文字列 $options = array( 'escape' => false,//第二引数をescapeするかどうか 'model' => 'Article',//使用するModel 'direction' => 'desc',//href属性の中に設定される asc or desc 'lock' => true,//directionで設定した値でhref属性を固定するか ) ) ?>
ソートに使用しているModelを取得
例として以下の通り。
<?php echo $this->Paginator->defaultModel(); ?>
ソートに使用しているdirectionを取得
例として以下の通り。asc, descの文字列が返されます。
<?php echo $this->Paginator->sortDir(); ?>
ソートに使用しているフィールドを取得
例として以下の通り。idなどの文字列が返されます。
<?php echo $this->Paginator->sortKey(); ?>
数字のリンクを出力
例として以下の通り。
<?php echo $this->Paginator->numbers( array( 'before' => 'before',//数字リンクの前に表示するコンテンツ 'after' => 'after',//数字リンクの後に表示するコンテンツ 'model' => 'Article',//ページ計算に利用するModel 'modulus' => 4,//現在ページの前後に2個ずつ表示するので4 'separator' => '|',//数字と数字の間に表示されるコンテンツ 'tag' => 'span',//a要素を包むタグ 'first' => 2,//数字または文字列を指定 'last' => 2,//数字または文字列を指定 'ellipsis' => '…',//省略されていることを表す文字列 'class' => 'class1 class2',//tagで指定した要素に付与するクラス 'currentClass' => 'currentClass',//現在ページを包む要素に付与するクラス 'currentTag' => 'em'//現在ページはリンクではないので、a要素の代わりに表示する要素 ) ); ?>
前へ
例として以下の通り。
<?php echo $this->Paginator->prev('前へ'); ?>
次へ
例として以下の通り。
<?php echo $this->Paginator->next('次へ'); ?>
最初へ
例として以下の通り。
<?php echo $this->Paginator->first('最初へ'); ?>
最後へ
例として以下の通り。
<?php echo $this->Paginator->last('最後へ'); ?>
現在何ページ目か
例として以下の通り。
<?php echo $this->Paginator->current(); ?>
次のページがあるか
例として以下の通り。
<?php // echo $this->Paginator->hasNext(); ?>
前のページがあるか
例として以下の通り。
<?php // echo $this->Paginator->hasPrev(); ?>
指定したページがあるか
Articleモデルの10ページ目があるかどうかの場合は、例として以下の通り。
<?php // $this->Paginator->hasPage('モデル名', 数値); echo $this->Paginator->hasPage('Article', 10); ?>
ページ情報の表示
例として以下の通り。
<?php echo $this->Paginator->counter( '現在のページは{:page}<br>全ページ数は{:pages}<br>一ページあたりの表示件数は{:current}<br>全データ件数は{:count}<br>このページの一件目は全データのうち{:start}<br>このページの最終データは全データのうち{:end}<br>モデル名を複数名にして読みやすい書式にしたもの{:model}' ); ?>