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 { }
測試結果: