例えばトップページから新着情報の過去のものを表示するためのページを作成する場合、数が多ければ当然ページネーションも用意すると思います。
その場合、取得するためにfind()で色々とクエリーを追加していくより、paginatorへ予め設定しておくと便利でした。
以下がcontrollerに設定と、表示するタグの例です。
コントローラーはTopicsとし、ページネーションのテンプレートは予め準備しているものとします。
// TopicsController内に追記
public $helpers = [
'Paginator' => ['templates' => 'paginator-templates'] // configフォルダ内にテンプレートファイルを準備
];
public $paginate = [
'limit' => 20, // 20件取得
'order' => [
'id' => 'desc', // idの降順
]
];
index()に元々あるプログラム
public function index()
{
$topics = $this->paginate($this->Topics); // 20件,降順で取得する
$this->set(compact('topics')); // ビューへデータを送る
}
Topcisのテンプレートでindex.ctpに表示する場所にタグを追記
<ul>
<?php foreach ($topics as $topic): ?>
<li><a href="<?php echo $this->Url->build(['action' => 'view', $topic->id]); ?>"><span class="date"><?= h(date("Y-m-d", strtotime($topic->created))) ?></span> <span class="title"><?= h($topic->title) ?></span></a>
</li>
<?php endforeach; ?>
</ul>
これで一覧は20件まで表示し、ページネーターは総件数を20で割った分のページ送りができているはず。