人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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ではないとダメなんです。分かるかた、教えてください

●質問者: goodbabies
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Area CakePHP LINK Op. SET
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tdoi
●100ポイント ベストアンサー

複数の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も使えますが、ページ番号の扱いがあるので、ちょっと一捻り必要になります。


何かの参考になれば。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ