ページネーション:ビューの詳細
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)
- $title
表示タイトル
- $key
ソート項目
- オプション
$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)
- $title
リンク文言。
- $options
model(対象Model)指定および、リンクオプション(Linkメソッドの$htmlAttributes)
- $disabledTitle
「前へ」「次へ」に該当する記事がない場合の表示文言。空は$titleと同じ。
- $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となる。