更新日: 2014-12-19 (金) 20:22:37 (586d)

:PHP

Cake PHP Paginate sort について

CakePHP 1.2.3.8166

CakePHPのPagination機能とは、たとえば100件あるようなデータを1ページに100件見せるのではなく、20件ごとぐらいに分割してページにしてくれる便利機能です。

また、項目をソートしてくれる機能もあります。

ここでは、このソート機能  $paginator->sort について書いておきます。

1.そもそもpagination機能を使うために、コントローラーで準備をしておきます。
pagination機能は、取得するデータを指定してそのまま使えます。
モデルのfindと同じように、使えるんですね。
(ついfindしてからpaginationを使うのかと思ってしまいますが、違います。)

//コントローラー
function test_view(){

$this->paginate=array(

 'モデル名' => array('conditions'=>array(
             'project_id'=>$project_id
                                          ),
                        'order'=>array(
             'PaperFormat.type_number'=>'desc'
		                       )
                      )					
                    );
$project_datas=$this->paginate();
$this->set('ProjectDatas', $project_datas);		
}

上記はコントローラー内のアクション test_viewで使用する際の書き方です。
$this->paginateはfind('all')と同じ役割をしてくれるので、わざわざ'all'はつける必要はありません。

2.次にビューファイルです。

ビューファイルでpaginagion のソート機能をつけるための編集方法です。
$paginator->sortの引数の設定は次の通りです。

$paginator->sort(
  '表示したい名称','ソートするキー名称','ページングでも利用する引数'
           )

例は次の通りです。

<?php echo $paginator->sort('プロジェクト番号','id',array(
                               'url'=>	$this->passedArgs 
                                                       )
		           );?>

第三の引数

array( 'url'=>	$this->passedArgs   )

は、今まで保持していた引数を保持するための便利な関数です。
たとえば、URLの

myapp/projects/test_view/3/62/

の3や62、という値を保持したまま、ソートを行ってくれます。
この例ではキーが'id'になっていますが、他のモデルを利用したい場合、

'Teacher.id'

みたいに.でつなげて書けばできるようです。

テーブル構造でデータを表示し、テーブルの見出しをソートのキーにしたい時、次のようにします。

<table>
  <tr>
 	<th><?php echo $paginator->sort('プロジェクト番号','id',array(
                'url'=>$this->passedArgs 
 )
);?>
       </th>
	<th>名称</th>
     </tr>
	<?php 
		//データ表示のループ
		foreach($Projects as $Project){ ?>		
		<tr>
		<td<?php if ($i % 2 == 0) echo $class;?>>
		<?php 
		echo $Project['name']; ?>
		</td>
	 </table>

参考:本家マニュアルサイト(英語)Custom Query Pagination
http://book.cakephp.org/view/249/Custom-Query-Pagination

  • コントローラーのpaginateに渡すパラメータめちゃ助かりました。本に載ってたコントローラ側のpaginateのソートを示すパラメータで"sort"にフィールド渡してもソートされずハマりました。コントローラ側は"order"だったんや!とこのサイト見て解決しました。m(_ _)m -- まけどん? 2010-09-23 (木) 16:15:30

選択肢 投票
このページの情報は役に立った 7  
このページの情報は役に立たなかった 2  
どちらでもない 1  
このページが参照された数
Total: 33013, 今日: 1, 昨日: 0

でじうぃきは神奈川県横浜市の位置情報システム・スマホアプリ開発の株式会社オンラインコンサルタントが運営しています。
投稿
トップ   このページを編集する 再編集不可にする 差分 バックアップ 添付 複製 名前変更 リロード   新しいページを作る 一覧 検索する 最新の更新   ヘルプ   最終更新のRSS
Last-modified: 2014-12-19 (金) 20:22:37 (586d)