如何从分页助手生成每页包含项目的下拉列表?默认值是每页 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
如何从分页助手生成每页包含项目的下拉列表?默认值是每页 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
正如@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();
每页的结果由分页数组中的“限制”参数驱动
<?php
$this->paginate = array(
'paramType' => 'querystring',
'limit' => 30,
);
?>
您可以通过将 limit 设置为查询字符串值来覆盖它。前任:
?limit=40
从那里您只需要构建一个下拉菜单,当他们选择每页的数量时更改 URL。
您可能还想实现maxLimit,这样用户就不会将此值更改为非常大的数字。
(这实际上只是对Warthel4578答案的评论,但我还没有足够的代表发表评论......只是想与遇到与此解决方案相同的问题的任何人分享此提示)
$limit = $this->params->query['limit'];
所以我在分页结果的初始页面加载时不断收到错误“未定义索引:限制”(在设置的行上),尽管在更改下拉值和分页结果刷新后,错误消失了。
代替$limit = $this->params->query['limit'];
,我不得不在我的视图中使用它:
$page_params = $this->Paginator->params();
$limit = $page_params['limit'];
我想你可以使用:
// Use the defaults.
echo $this->Paginator->limitControl();
更多信息在
https://book.cakephp.org/3.0/en/views/helpers/paginator.html#creating-a-limit-selectbox-control