どうも、こんにちは。
WEBチームのザックです。
CakePHPを始めて半年くらいたちました。
まだまだ知らないことも多い状況ですが、現在関わっている案件にて使用している技術的なことをメモ程度に書いていこうかと思います。
さて、さっそくタイトルの話、Paginatorとはなんだというところ・・・
これはリファレンスなどに詳しく書いてありますが、
ざっくり「お手軽にページ制御ができる」です。
大量のデータ、レコードをどのように表示するか、ページごとに表示する仕組みをcakeさんがよしなにやってくれる。
そんなコンポーネントになっています。
さっそく使い方ですが、ページ制御を行いたいコントローラーでまずは定義します。
class UsersController extends AppController { public $components = array('Paginator'); public $paginate = array( 'User' => array( 'limit' => 10, 'order' => array( 'User.id' => 'desc' ) ) ); }
findメソッドで使えるようなconditionsやfieldsやjoinsなど使えます。
public $paginate = array( 'User' => array( 'limit' => 10, 'order' => array( 'User.id' => 'desc' ), 'recursive' => 2, 'fields' => array( 'User.id', 'User.name', 'User.address' ) ) );
このようにpaginateを定義しておくことでコントローラーのアクションから呼び出すことが可能になります。
アクション内ではこんな感じでpaginateを呼び出します。
$conditions = array( 'User.active' => 1, ); $users = $this->paginate('User', $conditions);
上記ではアクション内でconditionsを設定してpaginateメソッドを使用しています。
以上で、お手軽にページ制御をすることができます。
細かくは書いていないので詳細に知りたい方はCookBookなどリファレンスを確認してください。
おそらく次回はアソシエーションとjoinのあれこれを書こうと思ってます!