ページネーションを行う (2/5)
作成:2011-12-26 08:16
更新:2011-12-26 08:16
更新:2011-12-26 08:16
■ページネーションデータの表示
では、$this->paginate()で取得したデータの表示の表示を作成しましょう。これはビューでの作業となります。先ほどサンプルとしてindexアクションのメソッドを挙げておきましたので、これを表示するindex.ctpの例を掲載して説明を行いましょう。
まず、データの表示についてです。ここでは繰り返しを使い、変数datasの配列から順に要素をとり出しています。
今回は、その他にちょっと面白い要素があります。それは並べ替えに関するリンクです。表示するテーブルには、それぞれの項目で並べ替えるためのリンクが用意されています。例えば、ID順で並べ替えるリンクは以下のように記述されています。
このsortによる並べ替えは、クリックするごとに昇順降順と変わりますし、ページネーションによりページ分けなども正しく行えるようになっています。非常に簡単ですのでぜひ覚えておきましょう。
まず、データの表示についてです。ここでは繰り返しを使い、変数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アクションに必要なパラメータが送られます。これにより、Controllerのpaginateメソッドで表示するデータを取得する際、これらパラメータを元にして並べ替えられたデータから必要なページのデータを取り出すようになる、というわけです。
このsortによる並べ替えは、クリックするごとに昇順降順と変わりますし、ページネーションによりページ分けなども正しく行えるようになっています。非常に簡単ですのでぜひ覚えておきましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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']; ?> </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>
※関連コンテンツ
「初心者のためのCakePHP2 プログラミング入門」に戻る