ちょっとページング処理を入れる必要が出てきて、PEAR::PagerでもいいんだけどCakeのinclude_pathってPEARと相性悪いのでさてさてどうしようと思ってぐぐったらtoyosystem | CakePHP::Pagenation(ページャ、ページング処理)という記事が出てきて、paginationコンポーネント、ヘルパー、エレメントを指定の場所に置いてテケテケっとするとページングが出来るという内容で、「私が探し求めていたのはまさにこれだ!」というわけで速攻で使ったのですが、すべて実装が終わったあとにPaginatorの使い方。CakePHP1.2 – CPA-LABテクニカルなどというエントリを発見。1.2からはpager内蔵らしいです。
使い方は内蔵されてる分paginationよりさらに簡単。
controllerはこんな感じ。5件ずつ表示したい。
function index()
{
$this->paginate['limit'] = 5;
$this->set('items', $this->paginate());
}
elements/paginator.ctpというファイルを作り中身をこんな感じに。
prev('<< '.__('previous', true),
array(),
null,
array('class'=>'disabled', 'tag' => 'span')
); ?>
|
numbers().
' | '.
$paginator->next(__('next', true).' >>', array(), null, array('tag' => 'span', 'class' => 'disabled'));
?>
そしたらviewで
renderElement('paginator'); ?>
とするだけ。ね、簡単でしょう?
わかりづらいのはcontrollerの所。普通の findAll() の変わりに paginate() を使う。詳細は上で紹介したブログに書いてある。
すごいねー。便利ねー。