一个保持模型的搜索逻辑,并在控制器仍然分页方法是做到这一点:
说明:
而是从模型返回的实际结果的,只要返回任何/全部找到选项,然后像通常那样进行分页。对于一些例子,如下面这个简单的例子,它可能看起来有点过分,但它为您的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;
}
}
有办法写的代码,这个有点更薄/更小线 - 但是我喜欢这样写它,所以它是快速理解。
(似乎没有要什么不对您的整体结构。)