ページネーション:ビューの詳細

CakePHPのページネーション(ページャ)機能のヘルパーについて。
以下CookBookから抜粋と補足。
http://book.cakephp.org/ja/view/166/Pagination-in-Views


「次のページ」などにURLのパラメータを引き継いで遷移

viewに以下の通り記載(勿論、対象のリンクより前)

$paginator->options(array('url' => $this->passedArgs));

特定のパラメータだけ引き継ぎたい場合*1

$paginator->options(array('url' => $this->passedArgs[0], $this->passedArgs["mode"], ・・・));

タイトル行の表示とソート項目を変えたい場合

例:

<?php echo $paginator->sort(__('Public', true), 'public_flag');?>


sort()メソッドの各引数は、以下の通り

 sort($title, $key, $options)

  1. $title

表示タイトル

  1. $key

ソート項目

  1. オプション

$optionsの指定は、url(クリックURL)とmodel(対象Model)。
それ以外は、htmlヘルパーLinkメソッドの$htmlAttributesに引き継がれるようです。
http://book.cakephp.org/ja/view/836/link


「次へ」「前へ」リンクの詳細設定

「次へ」「前へ」リンクを出力するprev()およびnext()メソッドの詳細は以下の通り

prev($title, $options, $disabledTitle, $disabledOptions)
next($title, $options, $disabledTitle, $disabledOptions)

  1. $title

リンク文言。

  1. $options

model(対象Model)指定および、リンクオプション(Linkメソッドの$htmlAttributes)

  1. $disabledTitle

「前へ」「次へ」に該当する記事がない場合の表示文言。空は$titleと同じ。

  1. $disabledOptions

「前へ」「次へ」に該当する記事がない場合の$option。


$disabledOptionsに特定のクラスを指定して表示を変えようとすると、引数の指定が冗長になるのでちょっと面倒です・・・
例:

<?php echo $paginator->prev('<< '.__('previous', true), array(), null, array('class'=>'disabled'));?>

「全xx件中x〜x件」などの表示

CookBookの counter()メソッドの例で全てを語りつくしているかと思われますので、そのまま引用。

echo $paginator->counter(array(
	'format' => '合計 %pages% ページ中の %page% ページ目です。
			総レコード %count% のうち、  %start% 行目から %end% 行目までの %current% 行を表示しています。'
)); 

*1:CookBookのように array("0", "1",...)と書くと、 http://hogehoge〜/0/1/page:2となる。