今仕事でCakePHPを使っているんですが、こういうフレームワークってルールを覚えるのが大変ですね。命名ルールを覚えたりメソッドの動作順序を覚えたり…
今日はpaginationで検索条件(GETパラメータ)を引き継ぐ方法がよくわからなくていろいろ調べていたんですが、view内で$paginator->options($options)に渡す$options['url']['?']にデータ(連想配列かクエリ文字列)を入れておくと検索条件を引き継げるみたいです。
$search_params; // 連想配列かクエリ文字列 // passedArgsがあるとソートのキーも引き継いでくれます $paginator->options( array('url' => array('?' => $search_params) + $this->passedArgs) );
$search_paramsは$this->params['url']から必要なデータを抜き出したものをcontroller内で作って$this->set()しておくか、view内で作ります($this->params['url']をそのまま$search_paramsにすると$this->params['url']['url']のせいで上手くいかないです)。
これで一応できるんですが、こういう処理はできればcontroller内でやりたい…。なのでcontrollerでどうやってやるのかもうちょっと調べてみます。
(クリボウの Blogger Tips: コードをハイライトする「Blogger Syntax Highlighter」ウィジェット を参考にシンタックスハイライトを入れてみました)
追記(3月12日)
CakePHPのpaginateにURLパラメータを渡す方法 - iakioの日記経由の極める routes.php (CakePHP 1.2) : akiyan.comでcontrollerでオプションを設定する方法を知りました。ただiakioの日記さんにもあるようにControllerクラスでオプションを設定するとNoticeエラーが出るのでやめました。消されてしまうlimitを使っている$paginator->counter()のstartとendが変な値になりますね…。