tp3.2.3保持搜尋條件的分頁
阿新 • • 發佈:2019-02-15
一、背景
之前用tp做頂部搜尋,做完之後也沒注意那麼多。後來測試的時候才發現,點選分頁的下一頁,我們之前的搜尋條件就沒用了。。這就有點不合適了,因此開始踩坑。
我這裡用的是Post方式提交的搜尋條件。檢視開發手冊,發現tp手冊中提供瞭解決方案:
手冊上寫的是很清楚,但是在我這裡還是行不通。可能是因為我用的是自定義分頁類的原因吧。無奈之下改成了GET方式提交搜尋條件。
二、步驟
1、首先貼出我的分頁方法。這個方法是寫在Common目錄下的function.php中,作為公用的分頁方法。
/**
*
* @param $count 要分頁的總記錄數
* @param int $pagesize 每頁查詢條數
* @param $where 傳遞過來的查詢條件
* @return \Think\Page
*/
function getNewPage($count, $pagesize,$where) {
$p = new Think\Page($count, $pagesize);
$p->setConfig('header', '<li class="rows">共<b>%TOTAL_ROW%</b>條記錄 第<b>%NOW_PAGE%</b>頁/共<b>%TOTAL_PAGE%</b>頁</li>' );
$p->setConfig('prev', '上一頁');
$p->setConfig('next', '下一頁');
$p->setConfig('last', '末頁');
$p->setConfig('first', '首頁');
$p->setConfig('theme', '%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%');
$p->lastSuffix = false;//最後一頁不顯示為總頁數
return $p;
這裡不用tp自帶分頁的原因是,自帶的分頁實在太醜了。。有點不忍直視,所以就改了一下樣式,分頁方法還是一樣的。
2、GET表單提交條件。
1)我之前做的搜尋條件是POST方式提交的,連結如下:
2)該用GET方法之後,只是獲取引數的方式由_GET,條件部分,我們還是根據條件組成了陣列。
//$where即為搜尋條件
if($openid){
$where['openid'] = ['EQ', $openid];
}
if($nickname){
$where['nickname'] = ['EQ', $nickname];
}
3)如果想要點選分頁的其他頁,保持我們的搜尋條件,那我們就需要把這個搜尋條件$where傳入到分頁方法中:
//傳入$where
$p = getpage($count,$page,$where);
//在分頁方法中加上一段程式碼:
$p = new Think\Page($count, $pagesize);
foreach($where as $key=>$val) {
$p->parameter .= "$key=".urlencode($val).'&';
}
這裡,我們相當於把搜尋條件的陣列傳入到分頁方法,然後迴圈拼接搜尋條件中的條件。這樣就能實現,我們點選分頁的時候,會自動帶上我們的搜尋條件。
例如:
點選第二頁,頂部的url會自動帶上搜索條件。這樣,分頁就成功保持住了搜尋條件了。
end