– コントローラのページネーション: 一定数ごとにレコードを取り出す
– ビューテンプレートのリンク
controller
$this->loadComponent('Paginator');
PeopleController.php
public $paginate = [ 'limit' => 5, 'sort' => 'id', 'direction' => 'asc', 'contain' => ['Messages'], ]; public function initialize(){ parent::initialize(); $this->loadComponent('Paginator'); } public function index(){ $data = $this->paginate($this->People); $this->set('data', $data); }
template
<p>This is People table records.</p> <table> <thead><tr> <th>id</th><th>name</th><th>mail</th><th>age</th><th>message</th> </tr></thead> <?php foreach($data->toArray() as $obj): ?> <tr> <td><?=h($obj->id) ?></td> <td><a href="<?=$this->Url->build(["controller"=>"People", "action"=>"edit"]); ?>?id=<?=$obj->id ?>"><?=h($obj->name) ?></a></td> <td><?=h($obj->mail) ?></td> <td><?=h($obj->age) ?></td> <td><?php foreach($obj->messages as $item): ?> "<?=h($item->message) ?>"<br> <?php endforeach; ?></td> <td><a href="<?=$this->Url->build(["controller"=>"People", "action"=>"delete"]); ?>?id=<?=$obj->id ?>">delete</a></td> </tr> <?php endforeach; ?> </table> <div class="paginator"> <ul class="pagination"> <?=$this->Paginator->first(' |<< ' . '最初へ') ?> <?=$this->Paginator->prev(' << ' . '前へ') ?> <?=$this->Paginator->next('次へ ' . ' >> ') ?> <?=$this->Paginator->last('最後へ' . ' >>| ') ?> </ul> </div>
custom finderを利用することもできる
なるほど、とりあえずOK 次に行こう