Thinkphp5之ajax分頁實現_paginate()參數詳細


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 {

}

 

 

測試結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM