如何从分页助手生成每页有项目的下拉列表?默认值是每页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
答案 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