2010-02-24 73 views
9

我的搜索頁面的分頁有問題。 當用戶搜索一些東西,我有一個url像domain.com/search/?s=keyword 但paginator給我鏈接如domain.com/search/page:x, 所以在下一個和prev和數字頁get參數丟失。我需要配置paginator來獲取像domain.com/search/page:x/?s=keyword 這樣的鏈接但我不能這樣做。CakePHP分頁和獲取參數

我需要知道如何配置

$paginator->options(); 
$paginator->next(); 
$paginator->prev(); 
$paginator->numbers(); 

來得到所需的效應。 Thanx。

回答

0

基本上你可以做這樣的:

function list_results($keywords) 
    { 
    $data = $this->paginate('Posts', array('Post.title LIKE' => '%'.$keywords.'%')); 
    } 
+0

對不起帕維爾,你不理解我。 我有我的視圖中的$數據,但只有在第一頁,如果我去第2頁我去domain.com/search/page:2,因爲在視圖中的$ paginator生成這樣的鏈接,所以獲得「s」價值是不存在於我的控制器,如果我去domain.com/search/page:2/?s=keyword我有2頁的搜索結果。 我不知道如何強制$ paginator生成鏈接,如domain.com/search/page:x/?s=keyword – Jos 2010-02-24 12:48:09

+0

哦,是的,我明白你的意思了。那麼我想看到這個解決方案。你可以做的一件事是使用會話組件來通過頁面攜帶關鍵字。它確實有一些缺點,但(不能給某人的鏈接)。 – PawelMysior 2010-02-24 14:34:37

20

創建選項陣列

​​

它設置爲輔助

$paginator->options($options) 

,然後你可以使用分頁程序幫手同時保留GET變量。

希望它能幫助:)

,使其更容易,你可以在你看來putl $分頁程序選項或.ctp文件

$this->Paginator->options['url']['?'] = $this->params['ur]; 

然後把值要:)

+4

+1此外,如果您不想覆蓋當前的分頁選項(即頁碼等),您可以追加到選項數組中:'$ this-> Paginator-> options ['url'] ['? '] = $ queryString;' – 2011-10-25 19:39:17

1

檢查this comment

我用它,它工作正常。

在app_controller文件

function _paginatorURL() { 
    $passed = ""; 
    $retain = $this->params['url']; 
    unset($retain['url']); 
    $this->set('paginatorURL',array($passed, '?' => http_build_query($retain))); 
} 

function beforeFilter() 
{ 
    $this->_paginatorURL(); 
} 

在意見文件:

<?php $paginator->options = array('url' => $paginatorURL);?> 

希望它能幫助。

+0

此評論鏈接無效 – 2012-12-09 07:01:56

2

我用馬加什的解決方案,但是對於$關鍵字我不喜歡這樣的:

$queryString = explode('?', $_SERVER['REQUEST_URI']); 
$options = array('url'=> array('controller' => 'post', 'action' => 'search', '?' => $queryString[1])); 
2

使用的語句在你看來出於傳遞參數,而分頁

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

這就是傳遞參數最簡單的方法。

一段時間$this->passedArgs當時不工作,在那裏傳遞靜態值並嘗試使用該靜態值。

$paginator->options(array('url' => array('a', 'b'))); 
0

我知道這是舊的,但發現一個簡單的解決方案,適合我。添加下面的視圖文件 -

$paginator->options(array('url' => array_merge($this->passedArgs, 
array('?' => ltrim(strstr($_SERVER['QUERY_STRING'], '&'), '&'))))); 

發現here