4

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

4 回答 4

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();
于 2013-06-27T12:09:49.180 回答
2

每页的结果由分页数组中的“限制”参数驱动

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

您可以通过将 limit 设置为查询字符串值来覆盖它。前任:

?limit=40

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

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

于 2013-06-26T07:43:54.457 回答
2

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

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

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

$page_params = $this->Paginator->params();
$limit = $page_params['limit'];
于 2013-12-31T05:07:41.573 回答
2

我想你可以使用:

// Use the defaults.

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

更多信息在

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

于 2017-10-15T14:49:32.727 回答