2012-05-02 61 views
2

我正在使用cakePHP,我試圖讓paginator組件通過get變量或者passargs,當你點擊到不同的頁面時。我有各種不同的搜索輸入選擇器,可以「過濾」返回的結果。這適用於第一視圖,但當我點擊不同的頁面時,它會顯示所有結果。cakePHP paginator not passing passedargs

我有我的分頁程序如下設置:

// In my controller class: 
public $paginate = array('maxLimit' => 10, 'paramType' => 'querystring'); 

// Within my action method: 
$this->paginate = array('conditions' => array(...), 
         order => array('Model.field ASC'), 
         'limit' => 20 
); 

// Calling the paginator: 
$results = $this->paginate('Model'); 
$this->set(compact('results')); 

在我看來文件:

<div class="paging"> 
<?php 
    echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled')); 
    echo $this->Paginator->numbers(array('separator' => '')); 
    echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled')); 
?> 
</div> 

編輯: 從我的理解,最好使用passedArgs,但我有點不確定如何做到這一點。我的$ this-> passedArgs不會返回結果,所以我在我的控制器示例中創建了傳遞的參數。我也改變了我的形式從獲取到後:

$this->passedArgs["searchfield"] = $_POST["value"]; 

現在正確地傳遞passedArgs在分頁條,但我不能確定如何現在建立尋呼條件陣列。在大多數情況下,用戶不會選擇默認值的例子,其中一個過濾器是從日期到日期,然後是一個搜索輸入框,如果我離開日期,它仍然會創建argumens並且不會返回任何結果,所以本質上我的url會是這樣的:

http://localhost/site/controller/action/page:3/datefrom:0/dateto:0/searchFor:survey 

任何援助?

回答

2

可以通過所有參數在與視圖傳遞:

$this->Paginator->options(array('url' => $this->passedArgs)); 

或手動分配PARAMS:

$this->Paginator->options(array('url' => array("0", "1"))); 

befor呼應分頁程序

參見CakePHP Cookbook用於進一步舉例

+0

嗨@ Nebel54,謝謝你的建議。我想我找到了問題,那就是我的過濾器表單或搜索表單僅將值發佈到GET,因此我的$ this-> passedArgs爲空。你能否指出我是如何構建passedArgs的? – mauzilla

+0

你可以發佈你的get參數的樣子嗎?是/ param1:true/param2:name or like /?param1 = true&param2 = name – Nebel54

+0

它是/ param1:value/param2:值,但現在因爲並非所有參數都會有值,所以它會執行param1:0/param2:possiblevalue/which will break the query – mauzilla