Cakephpのpaginateを同じコントローラー内で2回以上使いたいのですが、どうしたらいいのか分かりません。


function link(){
$this->paginate = array(
'conditions'=>array("Item.area" => 7,
),
'limit'=>10,
);
$this->set('link',$this->paginate());
}
function shop(){
$this->paginate = array(
'conditions'=>array("Shop.area" => 7),
'sort'=>'id',
'limit'=>10
);
$this->set('shops',$this->paginate());
}

こんなカンジで、同じコントローラー内で2回paginateが出てくるので、1回目のpaginateは上書きされてしまいます。
どうしても同じコントローラー内でpaginateではないとダメなんです。分かるかた、教えてください

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/13 14:50:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tdoi No.1

回答回数174ベストアンサー獲得回数75

ポイント100pt

複数のModelに対してpaginateを使う場合は、paginateメソッドの第一引数で指定します。

質問文から察すると、同じController内であっても、同じActionで複数使う必要はないですよね?

それであれば、こんな感じで行けると思います。

class SomeController extends AppController
{
    var $paginate = array('Item' => デフォルト条件,
                          'Shop' => デフォルト条件);
    function link() {
        $this->paginate['Item'] = array('conditions' => array("Item.area" => 7),
                                        'limit'=>10);
        $this->set('link',$this->paginate('Item'));
    }

    function shop() {
        $this->paginate['Shop'] = array('conditions' => array("Shop.area" => 7),
                                        'sort'=>'id',
                                        'limit'=>10);
        $this->set('shops',$this->paginate('Shop'));
    }
}

同じAction内に複数のModelに対するpaginateも使えますが、ページ番号の扱いがあるので、ちょっと一捻り必要になります。


何かの参考になれば。

id:goodbabies

まったくもっておっしゃるとおりでした!無事動きました

2011/04/13 14:49:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません