参考にさせて頂いたページ
ページネーションを行う(1/5):初心者のためのCakePHP2.0 プログラミング入門
ホストマシン環境
ゲストマシン環境
- PHP 5.3.3
- CentOS release 6.6 (Final)
- cakephp2.5.6
- mysql Ver 14.14 Distrib 5.6.21, for Linux (x86_64) using EditLine wrapper
- Apache/2.2.15 (Unix)
はじめに
これまでに作成してきたサンプルの、my_sample_dataテーブルを使用して実装してみる。
my_sample_dataテーブルには50件程度のデータを予め用意しました。
MySampleDatasController.phpの編集とその記述内容
参考ページにならって、MySampleDatasController.phpの$paginate
とindex
アクションを以下のように記述した。
<?php
App::uses('AppController', 'Controller');
class MySampleDatasController extends AppController {
//pagenaterの設定
public $paginate = array(
'page' => 1,//デフォルトでは1ページ目を表示
'limit' =>5, //5件ずつ表示
'conditions'=>array(
"MySampleData.name like 'name%'"//nameフィールドの値がnameで始まるもののみ取得
)
);
//indexアクション
function index(){
// レイアウト関係
$this->layout = "Sample";
$this->set("header_for_layout","Sample Application");
$this->set("footer_for_layout","copyright by SYODA-Tuyano. 2011.");
// 以下がデータベース関係
//$datas = $this->MySampleData->find('all');
$this->set('datas',$this->paginate());
}
}
Virew/MySampleDatas/index.ctpの編集とその記述内容
参考ページにならって以下の通り
<div>
<?php
echo $this->Paginator->first('<< ');
echo $this->Paginator->prev('< ');
echo $this->Paginator->numbers(
array(
'separator' => '/',
'modulus'=>2,
'before'=>'|',
'after'=>'|'
)
);
echo $this->Paginator->next(' >');
echo $this->Paginator->last(' >>');
?>
</div>
<table>
<tr>
<th><?php echo $this->Paginator->sort('id');?></th>
<th><?php echo $this->Paginator->sort('name');?></th>
<th><?php echo $this->Paginator->sort('mail');?></th>
<th><?php echo $this->Paginator->sort('tel');?></th>
</tr>
<?php foreach ($datas as $data): ?>
<tr>
<td><?php echo $data['MySampleData']['id']; ?></td>
<td><?php echo $data['MySampleData']['name']; ?></td>
<td><?php echo $data['MySampleData']['mail']; ?></td>
<td><?php echo $data['MySampleData']['tel']; ?></td>
</tr>
<?php endforeach; ?>
</table>
このソースコードについて
要点としてはMySampleDatasController.phpの中に
//pagenaterの設定
public $paginate = array(
'page' => 1,
'limit' =>5,
'conditions'=>array(
"MySampleData.name like 'name%'"
)
);
と
$this->set('datas',$this->paginate());
を書く。
上記した$paginate
には以下のようなものが設定できるとのこと。
- page (初期状態で表示されるページ番号)
- conditions (データの検索条件)
- fields (取得するデータの項目名を配列で指定)
- sort (データのソートの項目名を指定)
- limit (1ページあたりに表示する項目数)
- direction (sortで並べかえる方向。ascなら昇順、descなら降順)
- recursice (再帰的な読み込み深度を指定します。複数モデルが連携されているような場合にどこまでデータを読み取っていくか)
それからViewはさきほどのサンプルコードのように書く。
<?php echo $this->Paginator->sort('id');?>
のようにするとソートしなおす為のa要素を出力できる。
すごい。簡単。
今回はここまで。