CakePHP 1.3 で Paginate を最速で使う方法まとめ

CakePHP の Paginate を使って keyword を GET で受け取って検索結果を一覧にしつつページングを簡単に設定するための最低限のメモです。

コントローラーの設定

1
2
3
4
5
6
7
8
9
10
11
12
13
function search()
{
	$keyword = $this->params['named']['keyword'];
	$this->paginate = Array(
		'conditions' => $this->Hoge->search($keyword),
		'limit' => 50,
		'order' => array(
			'modified' => 'desc'
		)
	);
	$this->set('keyword', $keyword);
	$this->set('result', $this->paginate('Model'));
}

参考: Paginatorの使い方。CakePHP1.2 – CPA-LABテクニカル

Hoge コンポーネントの設定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function search($keyword)
{
	$keyword = mb_convert_kana($keyword, "s", "UTF-8");
	$keywords = explode(' ', $keyword);
 
	$params = Array();
	foreach($keywords as $count => $keyword) {
		$space = '';
		for($i = 0; $i < $count; $i++) {
			$space .= ' ';
		}
		$params['name ' . $space . 'LIKE BINARY'] = '%' . $keyword . '%';
	}
	return $params;
}

ビューの設定

1
2
3
4
5
6
7
8
9
10
11
12
<h2 class="name"><?php echo h($keyword); ?>の検索結果</h2>
<div class="search">
	<?php
	$paginator->options(array('url' => 'keyword:' . urlencode($keyword)));
	echo $paginator->prev('<< '.__('previous', true), array(), null, array('class'=>'disabled' )) . ' | '.
	$paginator->numbers().
	' | '.
	$paginator->next(__('next', true).' >>', array(), null, array
	('class'=>'disabled' )); 
	?>
	<?php echo $hoge->searchResult($result); ?>
</div>

参考: CakePHP: the rapid development php framework: Cakephp1.2のPaginatorのバリエーション

コメント

コメントは受け付けていません。