一個保持模型的搜索邏輯,並在控制器仍然分頁方法是做到這一點:
說明:
而是從模型返回的實際結果的,只要返回任何/全部找到選項,然後像通常那樣進行分頁。對於一些例子,如下面這個簡單的例子,它可能看起來有點過分,但它爲您的find()
,如contain
,order
,group
,joins
,conditions
等等等等增加了更多的選擇空間。與「胖模型,瘦控制器」的口頭禪。
設置您的find()
s這樣的選項也很好,因此它可以輕鬆地在整個網站中重複使用 - 只需傳遞不同的選項,您就可以輕鬆前往。
代碼:
/* CONTROLLER
*/
$opts = array('paginate' => true, 'limit'=>20);
$paginateOptions = $this->Event->getEvents($opts);
$this->paginate = $paginateOptions;
$data = $this->paginate('Event');
/* MODEL
*/
public function getProducts($opts = null) {
$params = array();
//limit
$params['limit'] = 50; //default
if(!empty($opts['limit'])) $params['limit'] = $opts['limit'];
//paginate option
$paginate = false;
if(isset($opts['paginate'])) {
if($opts['paginate']) $paginate = true;
}
//either return the options just created (paginate)
if($paginate) {
return $qOpts;
//or return the events data
} else {
$data = $this->find('all', $qOpts);
return $data;
}
}
有辦法寫的代碼,這個有點更薄/更小線 - 但是我喜歡這樣寫它,所以它是快速理解。
(似乎沒有要什麼不對您的整體結構。)