CakePHP の場合ページングには PaginatorHelper を使って行います。
GETパラメータをうまく引き継ぐ方法がわからないので、
一応こうやってみたというもの。
うまい方法あれば教えていただきたい。
CakePHP は 1.3.9 です。
検索フォーム
<form action="/index/index/" method="get"> <div> <input type="text" name="q" value="<?php echo h($q)?>"> <input type="submit" value="検索"> </div> </form>
IndexController::index()
class IndexController extends AppController
{
var $paginate = array(
'limit' => 100,
);
function index()
{
$q = (isset($this->params['url']['q'])) ? $this->params['url']['q'] : '';
$conditions = array(
'columns LIKE ?' => $q . '%',
);
$query_string = $this->params['url'];
unset($query_string['url']);
$this->set(array(
'rows' => $this->paginate('Model', $conditions),'
'q' => $q,
'query_string' => http_build_query($query_string),
));
}
}Viewのページング部分
//ここポイント
<?php $paginator->options(array('url' => array('?' => $query_string)));?>
<div class="paging">
<?php echo $this->Paginator->prev('<<', array(), null, array('class'=>'disabled'));?>
<?php echo $this->Paginator->numbers(array('separator' => ''));?>
<?php echo $this->Paginator->next('>>', array(), null, array('class' => 'disabled'));?>
</div> 見てもらえればわかるとおもうんですけど、
? の所に詰め込んでる感がある・・・。
ベストプラクティスが知りたい今日この頃です。