libro
www.tuyano.com
初心者のためのCakePHP2 プログラミング入門

ページネーションを行う (2/5)

作成:2011-12-26 08:16
更新:2011-12-26 08:16

■ページネーションデータの表示

では、$this->paginate()で取得したデータの表示の表示を作成しましょう。これはビューでの作業となります。先ほどサンプルとしてindexアクションのメソッドを挙げておきましたので、これを表示するindex.ctpの例を掲載して説明を行いましょう。

まず、データの表示についてです。ここでは繰り返しを使い、変数datasの配列から順に要素をとり出しています。
<?php foreach ($datas as $data): ?>
そして、取り出した$dataから、更に個別の値を取り出して表示しています。以下のような具合です。
<?php echo $data['MySampleData']['id']; ?>
$data内には、Model名のキーにそのModelのデータが保管されています。そこから指定の項目の値を取り出して表示しています。データの構造がわかれば別に難しいものではありませんね。

今回は、その他にちょっと面白い要素があります。それは並べ替えに関するリンクです。表示するテーブルには、それぞれの項目で並べ替えるためのリンクが用意されています。例えば、ID順で並べ替えるリンクは以下のように記述されています。
<?php echo $this->Paginator->sort('id');?>
$this->Paginatorというのは、Paginatorオブジェクトが保管されているプロパティです。ここから「sort」というメソッドを呼び出しています。sortメソッドは、引数で指定した項目でデータを並べ替えるようにするためのリンクのコードを生成するものです。つまり、「sortで並べ替えを行う」のではなく、あくまで並べ替えのリンクのテキストを生成するものなのですね。実際、これで生成されるリンクを見ると、以下のようなアドレスが<a>タグのhrefに設定されていることがわかります。
http://ホスト名/アプリ名/my_sample_datas/index/page:1/sort:id/direction:asc
このようにしてリンクをクリックすると、indexアクションに必要なパラメータが送られます。これにより、Controllerpaginateメソッドで表示するデータを取得する際、これらパラメータを元にして並べ替えられたデータから必要なページのデータを取り出すようになる、というわけです。

このsortによる並べ替えは、クリックするごとに昇順降順と変わりますし、ページネーションによりページ分けなども正しく行えるようになっています。非常に簡単ですのでぜひ覚えておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※index.ctpの例

<h1>Index Page</h1>
<p>MySampleData Index View.</p>
<table cellpadding="0" cellspacing="0">
  <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']; ?>&nbsp;</td>
    <td><?php echo $data['MySampleData']['name']; ?>&nbsp;</td>
    <td><?php echo $data['MySampleData']['mail']; ?>&nbsp;</td>
    <td><?php echo $data['MySampleData']['tel']; ?>&nbsp;</td>
  </tr>
  <?php endforeach; ?>
</table>

※関連コンテンツ

「初心者のためのCakePHP2 プログラミング入門」に戻る