2013-04-30 58 views
0

我有蛋糕(1.3)分頁限制的問題,這裏是代碼:CakePHP的分頁最後一頁永遠不會結束

$page = (!empty($this->params['form']['page'])) ? $this->params['form']['page'] : 1 ; 

# Consulta   
$this->paginate = array('limit' => $limit, 'page' => 555, 'order' => array('Candidate.id' => 'ASC'), 'conditions' => $conditions); 
$data = $this->paginate('Candidate'); 

當我送頁行1,2,3等。工程確定,但如果結果有6頁,並且我發送頁面7,8或999999,則查詢返回到頁面6,它的正確性?

我想查詢發送給我一個空數組而不是最後一頁無限。

當頁面不存在時,強制不發送任何內容的任何方法?

+0

我認爲這是正確和可取的行爲。最好看到一些內容而不是內容。 – ljubiccica 2013-04-30 10:18:13

回答

1

這就是CakePHP分頁的工作原理。

如果你想不同的行爲,你就必須捕捉控制器動作$this->params['named']['page'];價值,並決定,如果它是一個無效的號碼,然後返回你想要而空頁不是讓CakePHP中使用其默認

對於示例

public function index() { 

    $maxPage = 6; // need to calculate the max page value somehow 

    if ($this->params['named']['page'] > $maxPage) { 
     $rows = array(); 
    } else { 
     $rows = $this->paginate('Model'); 
    } 

    $this->set('rows', $rows); 
} 
+0

允許使用其他方法:$ this-> params ['paging'] [$ Model] ['pageCount']返回頁數,現在我創建邏輯來「限制」分頁。 但是..狗屎..它不是「邏輯」,看看返回的數據,如果頁面不包含數據..如果我發送頁面999999我可以得到「什麼」不是第6頁的內容。謝謝。 – Zenth 2013-04-30 10:28:20

0

在CakePHP 1.3中,這是默認行爲。這僅每CakePHP的2.3改變,因爲這本書mentions

由於2.3試圖訪問一個不存在的頁面時,PaginatorComponent將拋出一個NotFoundException,即請求的頁面數大於總頁數更大。

因此,您可以讓正常的錯誤頁面呈現或使用try catch塊並在發現NotFoundException時採取適當的措施。

如果您確實不希望出現的頁面顯示任何內容,您可以隨時將一些自定義代碼添加到您的控制器中,以代替出現錯誤頁面。

相關問題