CakePHP每页帮助项目

时间:2013-06-26 07:23:00

标签: cakephp cakephp-2.3

如何从分页助手生成每页有项目的下拉列表?默认值是每页20项,我想得到这样的东西:

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/

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

每页的结果由paginate数组中的'limit'参数

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

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

?limit=40

从那里你只需要构建一个下拉菜单,当他们选择每页的数量时会更改URL。

您可能还想实施maxLimit,因此用户不会将此值更改为非常大的数字。

答案 2 :(得分:2)

这实际上只是对Warthel4578答案的评论,但我还没有足够的代表发表评论...只想分享这个提示给任何遇到同样问题的人我对此解决方案的问题

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

代替$limit = $this->params->query['limit'];,我必须在我的视图中使用它:

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

答案 3 :(得分:2)

我认为你可以使用:

// Use the defaults.

echo $this->Paginator->limitControl();

的更多信息

https://book.cakephp.org/3.0/en/views/helpers/paginator.html#creating-a-limit-selectbox-control