2011-04-13 55 views

回答

2

默認分頁與SQL LIMIT子句一起使用,該子句在記錄級別上工作。您必須至少用您的自定義邏輯覆蓋Controller::paginate方法來完成您需要的操作(只需在您的控制器中創建一個function paginate())。至少應該可以重用PaginatorHelper,通過設置所有可用的參數。在視圖中嘗試debug($this->params)或查看default paginate implementation以查看這些變量是什麼。


細分:

  • 要正常分頁的數據,你做$result = $this->paginate(),返回你的分頁結果。
  • 在內部,paginate()函數查看URL參數(/page:42/sort:foobar等)以確定應該返回哪些記錄。
  • paginate()根據數據庫中記錄的總數,每個頁面的記錄和所請求的頁碼計算哪些記錄返回一些數學運算。
  • 它也給了一堆關於返回哪些記錄,我們正在瀏覽的頁面,有多少頁面等的視圖信息。
  • 視圖中的PaginationHelper讀取此信息以創建正確的鏈接對於下一個/上一個和頁碼,每個鏈接到一個帶有/page:xx/sort:yy參數的URL。
  • 重複該循環。

你要做的是鉤入Controller::paginate()函數所做的過程。你需要實現你自己的版本,它不會返回多個結果,而是一個「分頁」結果。如果它使用的參數以及它返回給視圖的參數與默認實現完全相同,則其餘的分頁邏輯應該完全相同。

+0

我認爲你是對的,因爲你一直在其他任何事情上......你有可能把它分解得更多一些嗎?我非常喜歡PHP,但這是我的第一個Cake項目,我感到不知所措。即使你有任何鏈接可以幫助我理解你在說什麼 - 因爲現在,這對我來說聽起來像是一句胡言亂語。 :)(感謝您的持續支持/幫助!) – Dave 2011-04-13 02:42:36

+0

@Dave試圖將其分解一點。希望你能通過這些信息和通過查看普通'paginate'方法的代碼來弄清楚它。 – deceze 2011-04-13 02:56:12

+0

這非常有幫助 - 非常感謝。 – Dave 2011-04-13 03:03:11

相關問題