PR

CakePHP pagenatorのメモ

pagenatorのメモ。

◆とりあえず使う

◇controllerのindex actionに書く

 function index() {
  $this->Deposit->recursive = 0;
  $this->set(‘deposits’, $this->paginate());
 }

◇viewのindex.ctp

▼以下は今何ページ目とか何件あるとか

「 Page 1 of 1, showing 2 records out of 2 total, starting on record 1, ending on 2 」のように表示される。

スポンサードリンク

<?php
echo $paginator->counter(array(
‘format’ => __(‘Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%’, true)
));
?>

▼以下はテーブルのヘッダ。クリックするとソートされるように仕込まれる。

「 /deposits/index/page:1/sort:deposit/direction:asc 」こんな風に出力される。

<table cellpadding=”0″ cellspacing=”0″>
<tr>
 <th><?php echo $paginator->sort(‘id’);?></th>
 <th><?php echo $paginator->sort(‘customer_id’);?></th>
 :
 :
 <th><?php echo $paginator->sort(‘created’);?></th>
 <th><?php __(‘Actions’);?></th>
</tr>

▼次のページへのリンク

「 << previous| 1 | 2 next >> 」(customers/index/page:2)こんなふうに出力される。

 <?php echo $paginator->prev(‘<< ‘.__(‘previous’, true), array(), null, array(‘class’=>’disabled’));?>
 |  <?php echo $paginator->numbers();?>
 <?php echo $paginator->next(__(‘next’, true).’ >>’, array(), null, array(‘class’ => ‘disabled’));?>

◆オプションとか

◇controllerにデフォルトのソートを設定する

 var $paginate = array(
  ‘order’ => array(
   ‘Deposit.created’ => ‘desc’
  )
 );

◆recursive はどこまでの情報を取ってくるかということらしい

recursive 取得可能な範囲
-1 カレントテーブルのみ(単体)
0 カレントテーブル+hasOne,belongsToの第1次アソシエーションテーブル
1 カレントテーブル+すべてのの第1次アソシエーションテーブル
2 上記 + subのsub,即ち第2次アソシエーションテーブル
3以上 上記 + 第3(以上)次のアソシエーションテーブル
(http://www.cpa-lab.com/tech/081 より引用)

参考文献

コメント