2013-06-26 58 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'];