2010-11-02 69 views
0

我有一個視圖,其中包含同一模型的兩個不同動作(一個項目列表按照最近的排序,並且按照最受歡迎的順序排序) 。我希望一次列出8個項目,每個項目包含12個項目。我使用AJAX來頁面中的項目。我如何設置控制器來處理這個任務?問題似乎是我無法創建兩個不同的分頁實例,因此無論採取何種行動,我都只能在相同數量的項目中進行分頁。如何在CakePHP中爲單個模型/控制器創建多個分頁實例

在此先感謝您的幫助。

什麼我試過到目前爲止

基本上嘗試設置具體到每一個動作的限制,而不是最初的分頁幫手:

var $paginate = array('order'=>array('Category.name'), 'limit'=>'8');

這就是助手的樣子,無論限制是什麼,它都會提供。即使我刪除該限制,並嘗試應用它,像這樣:

var $paginate = array('order'=>array('Item.name')); 

function discover_list(){  
    $this->set('d_ajax_items', $this->paginate('Item', array('Item.discover_order' => null, 'Item.moderated' => 1), null, 'Item.id DESC', null, 8)); 
} 

function trend_paging(){ 
    $this->set('trend_items', $this->paginate('Item', array('Item.moderated' => 1),NULL, 'rank DESC', NULL, 12)); 
} 

在行動結束時的限制被忽略,並且在一些默認的20個項目同時

回答

3

我誤解了你原來的問題。如果你想設置不同的限制每一個動作,你可以做到這一點

function discover_list() {  
    $this->paginate['limit'] = 8; 
    $this->paginate['conditions'] = array('Item.discover_order' => null, 'Item.moderated' => 1); 
    $this->set('d_ajax_items', $this->paginate('Item')); 
} 

編輯

一點點好方法

$this->paginate = array(
    'limit' => 8, 
    'conditions' => array('Item.discover_order' => null, 'Item.moderated' => 1), 
); 
$this->set('d_ajax_items', $this->paginate('Item')); 
+0

這看起來不錯。我將不得不在稍後嘗試一下,但非常感謝!出於好奇,我怎麼能讓它更清晰一些? – dclowd9901 2010-11-02 15:18:22

+0

工作出色,老兄。非常感謝你! – dclowd9901 2010-11-03 00:16:36

1

我已經進之前做過,我希望沒有。保持兩者同步對最終用戶來說是令人困惑的,也是開發者的噩夢。

你已經試過了什麼?我相信你可以有兩個實例,但是你需要直接將參數傳遞給函數paginate(),而不是將它們設置在類變量paginate上。

編輯

爲了避免混淆,我幾乎總是定義調用本身的分頁選項。

在第二個例子中,你通過六個參數進行分頁(),但只需要三:

function paginate($object = null, $scope = array(), $whitelist = array()) 

如果省略$對象,並傳遞一個數組作爲第一個參數,最後有兩個參數移到左邊。

您是否嘗試在第三個位置($ whitelist)輸入數組的順序和限制值?

http://api13.cakephp.org/class/controller#method-Controllerpaginate

http://api13.cakephp.org/view_source/controller/#line-1056

+0

明白了你的第一個點。這是客戶需求:)查看我更新的問題以獲取更多信息。 – dclowd9901 2010-11-02 13:15:03

+0

它總是。我會檢查什麼時候回家。 – Leo 2010-11-02 14:13:01

0

你可以用2周空的div開始在網頁,並通過映射到控制器/動作阿賈克斯2頁不同的URL調用。那麼你只需要擔心ajax分頁,但是你不會有任何cakephp問題,因爲每個分頁都可以用於他自己的操作。

如果你想unbostrusive javascript,這不是一個很好的方法,但如果你的整個應用程序需要JavaScript,它將工作。

+0

這個問題不在JavaScript中,因爲它在Cake中。我需要後端來提供正確的數據。 AJAX分頁使用您描述的方法很好地工作。這只是框架傳回的數據集,這是不可靠的。 – dclowd9901 2010-11-02 13:14:39

相關問題