– コントローラのページネーション: 一定数ごとにレコードを取り出す
– ビューテンプレートのリンク
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 次に行こう