2013-06-26 27 views
4

如何从分页帮助器生成一个下拉列表每页的项目?默认值为每页20个项目,我想是这样的:CakePHP每页项目帮手

Show 
<select> 
    <option value="10">10</option> 
    <option value="25">25</option> 
    <option value="50">50</option> 
    <option value="100">100</option> 
</select> 
entries 

http://jsfiddle.net/HkWuH/

回答

7

正如@BigToach提到我有这个在我的控制器

$this->paginate = array(
    'paramType' => 'querystring', 
    'limit' => 30, 
    'maxLimit' => 100 
); 

添加方法和下面的代码添加到我的浏览

$limit = $this->params->query['limit']; 
$options = array(5 => '5', 10 => '10', 20 => '20'); 

echo $this->Form->create(array('type'=>'get')); 

echo $this->Form->select('limit', $options, array(
    'value'=>$limit, 
    'default'=>20, 
    'empty' => FALSE, 
    'onChange'=>'this.form.submit();', 
    'name'=>'limit' 
    ) 
); 
echo $this->Form->end(); 
+0

+1,很好的答案,真的帮助我节省了时间 –

2

每页的结果是由“限制”参数PAGINATE阵列驱动

<?php 
$this->paginate = array(
    'paramType' => 'querystring', 
    'limit' => 30, 
); 
?> 

您可以通过将限制设置为查询字符串值来覆盖此设置。例如:

?limit=40 

从那里,你只需要建立一个下拉时,他们选择每页数量改变的URL。

您可能还需要执行maxLimit,以便用户不要将此值更改为非常大的数字。

+0

谢谢, 这对我帮助很大! – jtomaszk

2

这仅仅是一个上Warthel4578“的评论回答,但我没有足够的代表评论尚未...只是想分享这个提示,谁遇到同样的问题,我有这个解决方案

因此,在分页结果的初始页面加载时,我一直收到错误“未定义索引:限制”(在设置$limit = $this->params->query['limit'];的行上),但更改下拉值并更新分页结果后,错误消失。

在地方$limit = $this->params->query['limit'];,我不得不用这个在我看来:

$page_params = $this->Paginator->params(); 
$limit = $page_params['limit'];