到目前为止,我可以通过设置静态限制来加载结果。但是对于我的主观,我需要这个限制可以通过一个函数来设置,每当有一个新的调用以获得更多结果时,它会产生2-8之间的数字(我已经完成了这个功能,但是不知道它在代码中的位置)
function random_cols () {
$min_cols=2;
$max_cols=8;
$cols = array();
$n = rand($min_cols,$max_cols);
array_push($cols, $n);
$var = 12 - $n;
while ($var>0) {
$n = rand($min_cols,$var);
if ($var-$n<=1) {
$n = $var;
}
$var = $var - $n;
array_push($cols, $n);
}
return $cols;
}
$mylimit_arr = random_cols ();
$mylimit = count($mylimit_arr);
控制器:
public $paginate = array(
'limit' => $mylimit,
'order' => array('Post.id' => 'asc' ),
);
public function index() {
$posts = $this->paginate('Post');
$this->set('posts', $posts);
}
查看(使用infinitescroll插件):
<div id="posts-list">
<div class="post-item"></div>
</div>
<script>
$(function(){
var $container = $('#posts-list');
$container.infinitescroll({
navSelector : '.next', // selector for the paged navigation
nextSelector : '.next a', // selector for the NEXT link (to page 2)
itemSelector : '.post-item', // selector for all items you'll retrieve
debug : true,
dataType : 'html',
loading: {
finishedMsg: 'No more posts to load. All Hail Star Wars God!',
img: '<?php echo $this->webroot; ?>img/spinner.gif'
}
}
);
});
</script>
你可能想知道为什么我需要它,但它因为设计和我显示结果的方式
答案 0 :(得分:1)
$this->paginate = array('limit' => $mylimit);
诀窍。
您的控制器应如下所示:
public function index() {
$mylimit_arr = random_cols();
$mylimit = count($mylimit_arr);
$this->paginate = array(
'order' => array('Post.id' => 'asc'),
'limit' => $mylimit
);
$posts = $this->paginate('Post');
$this->set('posts', $posts);
}