slumbers

思いついたことをつらつらと

CakePHP で get 送信されたパラメータを引き継ぐ pagination のやり方

検索フォームは昔から method="get" と決まってる(独断と偏見)
CakePHP の場合ページングには PaginatorHelper を使って行います。
GETパラメータをうまく引き継ぐ方法がわからないので、
一応こうやってみたというもの。
うまい方法あれば教えていただきたい。

CakePHP は 1.3.9 です。


検索フォーム

 

   
   
 


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のページング部分
//ここポイント
options(array('url' => array('?' => $query_string)));?>

Paginator->prev('<<', array(), null, array('class'=>'disabled'));?>
Paginator->numbers(array('separator' => ''));?>
Paginator->next('>>', array(), null, array('class' => 'disabled'));?>

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