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>
見てもらえればわかるとおもうんですけど、
? の所に詰め込んでる感がある・・・。
ベストプラクティスが知りたい今日この頃です。