[英]CakePHP pagination and the get parameters
我的搜索頁面中的分頁存在問題。 當用戶搜索某些內容時,我有一個像domain.com/search/?s=keyword
這樣的網址,但是paginator會給我一些像domain.com/search/page:x
這樣的鏈接,所以在下一個和prev和數字頁面中,get參數會丟失。 我需要配置paginator來獲取像domain.com/search/page:x/?s=keyword
這樣的鏈接但是我不能這樣做。
我需要知道如何配置
$paginator->options();
$paginator->next();
$paginator->prev();
$paginator->numbers();
獲得所需的效果。 感謝名單。
創建選項數組
$options = array(
'url'=> array(
'controller' => 'posts',
'action' => 'search',
'?' => 'keyword='.$keyword
)
);
把它設置為幫手
$paginator->options($options)
然后你可以在保留GET變量的同時使用paginator helper。
希望它有幫助:)
為了方便您在視圖或.ctp文件中使用putl $ paginator選項
$this->Paginator->options['url']['?'] = $this->params['ur];
然后把你想要的值:)
要將所有URL參數傳遞給paginator函數,請將以下內容添加到視圖中:純文本視圖
$paginator->options(array('url' => $this->passedArgs));
而已。 請參閱http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html
在視圖中使用語句,以便在分頁時傳遞參數
$paginator->options(array('url' => $this->passedArgs));
這是傳遞參數的最簡單方法。
有些時候$this->passedArgs
沒有工作,在那里傳遞靜態值並嘗試使用該靜態值。
$paginator->options(array('url' => array('a', 'b')));
我使用了Matyas解決方案,但對於$ keyword,我確實喜歡這樣:
$queryString = explode('?', $_SERVER['REQUEST_URI']);
$options = array('url'=> array('controller' => 'post', 'action' => 'search', '?' => $queryString[1]));
檢查此評論 。
我用它,它工作正常。
在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 );?>
希望能幫助到你。
基本上你可以這樣做:
function list_results($keywords)
{
$data = $this->paginate('Posts', array('Post.title LIKE' => '%'.$keywords.'%'));
}
我知道這是舊的,但找到了一個適合我的簡單解決方案。 在視圖文件中添加以下內容
$paginator->options(array('url' => array_merge($this->passedArgs,
array('?' => ltrim(strstr($_SERVER['QUERY_STRING'], '&'), '&')))));
在這里找到它
$this->Paginator->options['url']['?'] = ['key' => $this->params['url']['value']];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.