CakePHPのページネーションより Pear Pager の方が好きなので、
CakePHPで Pear Pager を使ってみる。
さらに、 Twitter Bootstrap を使いたいので、ソースを少しイジる。
環境は CakePHP2.x + CentOS 6.3 で
Pear Pager はインストール済みとする。
まずは、Pear Pager を CakePHP の /app/Vendor ディレクトリにコピーする。
CakePHPでは外部ライブラリをVendorディレクトリに放り込んで使うらしい。
今回は Twitter Bootstrap に適用させるために、
ソースをいじったので、Vendor で管理した方が都合がよかった。
Pear Pager は /usr/share/pear/ の Pager.php + Pagerディレクトリ を使うので、
上記2点をVendorディレクトリにコピーする。
コピーしたら、Controller で Pager を読み込む。
ここの読み込ませ方は 1.3 と 2.x で違うので、注意。
App::uses('Pager','Vendor');
これで Pager は正常に読み込まれるが、
CakePHPはURLがフレームワーク的なので、リンク部分が上手く動かない。
なので、Pager のオプション配列を設定する。
オプション配列のポイントは以下になる。
$options = array( 'path' => Router::url('index', true), 'fileName' => '%d', 'append' => false );
path はリンクの絶対URLなので、Controller の Router::url() で設定する。
fileName は path の最後に付くページ番号。
append は false にしないと fileName が有効にならないので、false にする。
これで動くようになると思う。
次に Twitter Bootstrap を適用させる。
今回はソースコードをイジった。
Vendorディレクトリで管理しているので、
イジってもサーバ内の Pager には影響ないからいいかなと・・・。
まずは、HTMLを下のようにする。
<div class="pagination"> <ul> <?php echo $_navi['all']; ?> </ul> </div>
これだけだとダメで、
Pager から吐き出される aタグ に liタグ を付けなければいけない。
なので、ソースをイジる。
Pager の Common.php で組み立てられる aタグの前後に liタグ を付ける。
「
<li><a href="%s"%s%s%s%s title="%s">%s</a></li>
これでリンクは装飾されるが、アクティブになっているページは装飾されないので、
Pager のオプション配列で設定する。
$options = array( 'curPageSpanPre' => '<li class="active"><a>', 'curPageSpanPost' => '</a></li>' );
これで現在ページの前後に li + a タグ を出力できる。
終了。