inari111 blog

Webエンジニアの備忘録

CakePHPのPagination機能

CakePHPのPagination機能を使ってみようとして詰まったのでメモ程度に。

CakePHPで家計簿WEBアプリを作る ブログチュートリアルのおさらい-ITかあさん
を参考に書いていたのだが、どうしてもPaginationのところでエラーが出てしまう。

Controller/PurchasesController.phpはこんな感じ

public function index() {
		//全ての購入品リストを取得
		$this->paginate = array(
			'order' => array('Purchase.asc'),
			'limit'=>20//1ページあたりの表示件数
		);
		//view側に購入品リストを渡す
		$this->set('purchases',$this->paginate('Purchase')); 
	}

ページ送りするための
View/Elements/paginator.ctp

<div id='pagination'>  
<?php echo $paginator->prev('<< '.__('戻る', true),  
array(),  
null,  
array('class'=>'disabled', 'tag' => 'span',)  
); ?>  
|  
<?php echo $paginator->numbers().  
' | '.  
$paginator->next(__('', true).' >>', array(), null, array('tag' => 'span', 'class' => ''));  
?>  
</div>  

Views/Purchases/index.ctp

<?php echo $this->element('paginator');?><?php echo $paginator->counter(array(
	'format' => '%start% ~ %end%件(全%count%件)'));?>

<table width="100%" cellspacing="0" cellspacing="0" border="0">
	<tr>
		<td>id</td>
		<td>カテゴリー</td>
		<td>購入品</td>
		<td>金額</td>
		<td>日時</td>
		<td>編集</td>
	</tr>
	<?php foreach ($purchases as $purchase):?>
	<tr>
		<td><?php echo $purchase['Purchase']['id'];?></td>
		<td></td>
		<td><?php echo $purchase['Purchase']['name'];?></td>
		<td><?php echo $purchase['Purchase']['money'];?></td>
		<td><?php echo $purchase['Purchase']['created'];?></td>
		<td><a href="/purchases/edit<?php echo $purchase['Purchase']['id'];?>">編集</a> | <a href="/purchases/delete/<?php echo $purchase['Purchase']['id'];?>" onclick="return confirm('削除してもよろしいですか')";>削除</a></td>
	</tr>

	<?php endforeach;?>
</table>

を書いたが動かず。。。

paginator.ctp

<?php echo $this->Paginator->prev('<< '.__('戻る', true),

index.ctp

<?php echo $this->Paginator->counter(array(
	'format' => '%start% ~ %end%件(全%count%件)'));?>

と書き直す。

なぜか
$paginator->では動かなかったが、
$this->Paginator->では動いた。
CakePHP1.x とCakePHP2.xの違いなのだろうか。。。

わからないことが多すぎる。

参考記事
CakePHPのPagination機能を使ってみる | もふもふ部@CAW
CakePHP 2.1で検索&ページング処理を作る - へびにっき