Thinkphp5 做數據搜索需要帶關鍵詞分頁,如何將查詢條件帶入到分頁中,本文詳細介紹Thinkphp5 分頁帶參數
一、基本使用方法:
$list = Db::name('user')->where('status',1)->paginate(10);
二、查看thinkphp5 paginate()函數
paginate()函數可以帶三個參數:
$listRows 每頁數量 數組表示配置參數
$simple 是否簡潔模式或者總記錄數 如果為true,那么分頁的就是只有上一頁和下一頁
$config 配置參數 具體可以自己傳入或者在配置文件中配置
$config 參數具體配置
| 參數 | 描述 |
| list_rows | 每頁數量 |
| page | 當前頁 |
| path | url路徑 |
| query | url額外參數 |
| fragment | url錨點 |
| var_page | 分頁變量 |
| type | 分頁類名 |
三、解決方案:
$list = Db::name('user')->where('status',1)->paginate(10,false,
[
'type' => 'Bootstrap',
'var_page' => 'page',
//使用jqery 無刷新分頁
'path'=>'javascript:AjaxPage([PAGE]);'
//第一種方法,使用數組方式傳入參數
'query' => ['keyword'=>$keyword],
// 第二種方法,使用函數助手傳入參數
// 'query' => request()->param(),
]
);
使用時在html模板頁相應位置放入{$list->render()}
<!-- 分頁 -->
<div class="row">
<div id="result">
{$list->render()}
</div>
</div>
此時頁面里會生成一個頁碼界面.
雖然方法很簡單,但是存在一個問題,每次點擊頁面都要刷新,用戶體驗很不好,所以要在tp5原有分頁類的基礎上加一個ajax操作,直接上代碼:
模板jquery_ajax代碼:
<script>
var AjaxPage = function(page){
$.ajax({
url:'http://xxx/public/index.php/back/topic/ajaxList',
type:'post',
dataType:'json',
data: {apage:page},
success:function(data){
//console.log(data)
$("#result").html(data.page);
}
});
}
</script>
控制器controller\Topic.php
//顯示分類管理界面
public function listAction(){
$list = model('Topic')->paginate(10,false,[
'type' => 'Bootstrap',
'var_page' => 'page',
'path'=>'javascript:AjaxPage([PAGE]);',
//使用函數助手傳入參數
'query' => request()->param(),
]);
// $res = $mem->getList();
$this->assign('list',$list);
return $this->fetch('list');
}
public function ajaxListAction(){
$page = request()->param('apage');
if (!empty($page)) {
$rel = model('topic')->paginate(10,false,[
'type' => 'Bootstrap',
'var_page' => 'page',
'page' => $page,
'path'=>'javascript:AjaxPage([PAGE]);',
]);
$page = $rel->render();
}
return json(['list'=>$rel,'page'=>$page]);
}
因為使用了模型方法,還要定義一個模型類model\Topic.php
<?php
/**
* Created by PhpStorm.
* User: houzhyan
* mail: houzhyan@126.com
* Locator: http://www.phpclass.top
* Date: 2017/10/23
* Time: 11:58
*/
namespace app\back\model;
use think\Model;
class Topic extends Model {
}
測試結果:

