亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

在Laravel中使用DataTables插件的方法

2024-05-05 00:03:58
字體:
來源:轉載
供稿:網友

DataTables 是一個 jQuery 的表格插件,記錄一下在 Laravel 中使用的常用功能和用法,比如 ajax 獲取數據,自定義搜索,效果展現,選項說明等等,有一些細節記錄下來方便以后查看。

Laravel 控制器方法

接受 ajax get 請求,返回數據。

dataTables 會自帶一些參數過來,需要按照格式返回數據,比如分頁等。見 dataTables 官方文檔說明。

代碼如下:

// ajax GET 獲取列表數據public function getList(Request $request){  $dynamicType = $request->get('dynamic_type');  $draw = $request->get('draw');  $start = $request->get('start');  $length = $request->get('length');  $groupId = $request->get('group_id');  $dynamicId = $request->get('dynamic_id');  $userid = $request->get('userid');  $isAudit = $request->get('is_audit', 0);  if (!$dynamicType || !in_array($dynamicType, [1, 2])) {    return response()->json(['error' => '缺少參數!']);  }  $builder = Dynamics::select(['id', 'userid', 'group_id', 'dynamic_id', 'dynamic_type', 'content', 'money', 'is_audit', 'audited_at'])->where('dynamic_type', $dynamicType);  //自定義搜索  if ($groupId) {    $builder->where('group_id', $groupId);  }  if ($dynamicId) {    $builder->where('dynamic_id', $dynamicId);  }  if ($userid) {    $builder->where('userid', $userid);  }  if (!is_null($isAudit)) {    $builder->where('is_audit', $isAudit);  }  $total = $builder->count();  $list = $builder->orderBy('id', 'desc')->offset($start)->take($length)->get()->toArray();  $imgInfo = [];  $dynamicIds = $this->getDynamicIds($list);  if ($dynamicIds) {    $imgInfo = DynamicImage::whereIn('dynamic_id', $dynamicIds)->pluck('images', 'dynamic_id');  }  $fillImages = function ($item) use ($imgInfo) {    if (isset($imgInfo[$item['dynamic_id']])) {      $item["images"] = json_decode($imgInfo[$item['dynamic_id']]);    } else {      $item["images"] = [];    }    return $item;  };  $list = array_map($fillImages, $list);  $data = [];  $data["draw"] = $draw;  $data["recordsTotal"] = $total;  $data["recordsFiltered"] = $total;  $data["data"] = $list;  return response()->json($data);}// ajax GET 獲取列表數據public function getList(Request $request){  $dynamicType = $request->get('dynamic_type');  $draw = $request->get('draw');  $start = $request->get('start');  $length = $request->get('length');  $groupId = $request->get('group_id');  $dynamicId = $request->get('dynamic_id');  $userid = $request->get('userid');  $isAudit = $request->get('is_audit', 0);   if (!$dynamicType || !in_array($dynamicType, [1, 2])) {    return response()->json(['error' => '缺少參數!']);  }   $builder = Dynamics::select(['id', 'userid', 'group_id', 'dynamic_id', 'dynamic_type', 'content', 'money', 'is_audit', 'audited_at'])->where('dynamic_type', $dynamicType);   //自定義搜索  if ($groupId) {    $builder->where('group_id', $groupId);  }   if ($dynamicId) {    $builder->where('dynamic_id', $dynamicId);  }   if ($userid) {    $builder->where('userid', $userid);  }   if (!is_null($isAudit)) {    $builder->where('is_audit', $isAudit);  }   $total = $builder->count();  $list = $builder->orderBy('id', 'desc')->offset($start)->take($length)->get()->toArray();    $imgInfo = [];  $dynamicIds = $this->getDynamicIds($list);  if ($dynamicIds) {    $imgInfo = DynamicImage::whereIn('dynamic_id', $dynamicIds)->pluck('images', 'dynamic_id');  }   $fillImages = function ($item) use ($imgInfo) {    if (isset($imgInfo[$item['dynamic_id']])) {      $item["images"] = json_decode($imgInfo[$item['dynamic_id']]);    } else {      $item["images"] = [];    }    return $item;  };  $list = array_map($fillImages, $list);   $data = [];  $data["draw"] = $draw;  $data["recordsTotal"] = $total;  $data["recordsFiltered"] = $total;  $data["data"] = $list;  return response()->json($data);}

dataTables 發 ajax 請求及一些選項設置

columnDefs 用來自定義每個字段如何展現,可以封裝自己的展現邏輯,也可以獲取到這一行各個字段的值。

createdRow 可以改變創建每一行的行為,比如修改這一行的樣式等等。

table.draw() 方法可以重新發起 ajax 請求。

<script type="text/javascript">  $dataTable = $("#dataTable");  var table = $dataTable.DataTable({    "processing": true,    "serverSide": true,    "pageLength": 25,    "lengthMenu": [10, 25, 50, 75, 100, 200],    "ajax": {      "url": "{{ route('audit.getList') }}",      "data": function (data) {        data.dynamic_type = "{{ Request::get('dynamic_type', 1) }}";        data.group_id = $("#group_id").val();        data.dynamic_id = $("#dynamic_id").val();        data.userid = $("#userid").val();        data.is_audit = $("#is_audit").val();        data.t = "{{ time() }}";      }    },    "columns": [      {"data": "id"},      {"data": "userid"},      {"data": "group_id"},      {"data": "dynamic_type"},      {"data": "dynamic_id"},      {"data": "content"},      {"data": "images"},      {"data": "money"},      {"data": "is_audit"},      {"data": "audited_at"}    ],    "columnDefs": [      {        "render": function (data, type, row) {          if (data == 1) {            return "活動";          } else if (data == 2) {            return "動態";          }        },        "targets": 3      },      {        "render": function (data, type, row) {          html = "";          $.each(data, function (k, v) {            html += "<a href='" + v.origin + "' target='_blank'><img src='" + v.origin + "' width='160' style='margin-bottom: 2px;'>";          });          return html;        },        "targets": 6      },      {        "render": function (data, type, row) {          if (data == 0) {            return "未審核";          } else if (data == 1) {            return "審核通過";          } else if (data == -1) {            return "審核不通過";          }        },        "targets": 8      },      {        "render": function (data, type, row) {          if (row.is_audit == 0) {            return "<a class='btn btn-primary audit' data-type = 1>通過</a> <a class='btn btn-danger audit' data-type = 2>不通過</a>";          }          return "-";        },        "targets": 10      }    ],    "createdRow": function (row, data, index) {      $('td', row).eq(4).attr('style', 'word-break:break-all');      $('td', row).eq(2).attr('style', 'word-break:break-all');      $('td', row).eq(5).attr('style', 'word-break:break-all');    },    "language": {      processing: "數據加載中...",      info: "顯示第 _START_ 至 _END_ 條,共 _TOTAL_ 條記錄",      infoEmpty: "暫無數據",      lengthMenu: "顯示 _MENU_ 條記錄",      paginate: {        first: "首頁",        previous: "上一頁",        next: "下一頁",        last: "最后一頁"      }    }  });  $dataTable.find('tbody').on('click', '.audit', function () {    var data = table.row($(this).parents('tr')).data();    var id = data.id;    var userid = data.userid;    var group_id = data.group_id;    var dynamic_id = data.dynamic_id;    var dynamic_type = data.dynamic_type;    var type = $(this).data('type');    audit(id, type, userid, group_id, dynamic_id, dynamic_type)  });  // 審核操作  function audit(id, type, userid, group_id, dynamic_id, dynamic_type) {    $.post("{{ route('audit.index') }}/" + id, {      id: id,      type: type,      userid: userid,      group_id: group_id,      dynamic_id: dynamic_id,      dynamic_type: dynamic_type,      _token: "{{ csrf_token() }}",      _method: "PUT"    }, function (data) {      if (data.result == 0) {        table.ajax.reload();        toastr.success("操作成功!");      }    });  }  $("#is_audit").select2({    placeholder: "請選擇狀態",    minimumResultsForSearch: Infinity  });  // 搜索  $("#searchBtn").click(function(){    table.draw();  });</script> <script type="text/javascript">  $dataTable = $("#dataTable");  var table = $dataTable.DataTable({    "processing": true,    "serverSide": true,    "pageLength": 25,    "lengthMenu": [10, 25, 50, 75, 100, 200],    "ajax": {      "url": "{{ route('audit.getList') }}",      "data": function (data) {        data.dynamic_type = "{{ Request::get('dynamic_type', 1) }}";        data.group_id = $("#group_id").val();        data.dynamic_id = $("#dynamic_id").val();        data.userid = $("#userid").val();        data.is_audit = $("#is_audit").val();        data.t = "{{ time() }}";      }    },    "columns": [      {"data": "id"},      {"data": "userid"},      {"data": "group_id"},      {"data": "dynamic_type"},      {"data": "dynamic_id"},      {"data": "content"},      {"data": "images"},      {"data": "money"},      {"data": "is_audit"},      {"data": "audited_at"}    ],    "columnDefs": [      {        "render": function (data, type, row) {          if (data == 1) {            return "活動";          } else if (data == 2) {            return "動態";          }        },        "targets": 3      },      {        "render": function (data, type, row) {          html = "";          $.each(data, function (k, v) {            html += "<a href='" + v.origin + "' target='_blank'><img src='" + v.origin + "' width='160' style='margin-bottom: 2px;'>";          });          return html;        },        "targets": 6      },      {        "render": function (data, type, row) {          if (data == 0) {            return "未審核";          } else if (data == 1) {            return "審核通過";          } else if (data == -1) {            return "審核不通過";          }        },        "targets": 8      },      {        "render": function (data, type, row) {          if (row.is_audit == 0) {            return "<a class='btn btn-primary audit' data-type = 1>通過</a> <a class='btn btn-danger audit' data-type = 2>不通過</a>";          }          return "-";        },        "targets": 10      }    ],    "createdRow": function (row, data, index) {      $('td', row).eq(4).attr('style', 'word-break:break-all');      $('td', row).eq(2).attr('style', 'word-break:break-all');      $('td', row).eq(5).attr('style', 'word-break:break-all');    },    "language": {      processing: "數據加載中...",      info: "顯示第 _START_ 至 _END_ 條,共 _TOTAL_ 條記錄",      infoEmpty: "暫無數據",      lengthMenu: "顯示 _MENU_ 條記錄",      paginate: {        first: "首頁",        previous: "上一頁",        next: "下一頁",        last: "最后一頁"      }    }  });   $dataTable.find('tbody').on('click', '.audit', function () {    var data = table.row($(this).parents('tr')).data();    var id = data.id;    var userid = data.userid;    var group_id = data.group_id;    var dynamic_id = data.dynamic_id;    var dynamic_type = data.dynamic_type;    var type = $(this).data('type');    audit(id, type, userid, group_id, dynamic_id, dynamic_type)  });   // 審核操作  function audit(id, type, userid, group_id, dynamic_id, dynamic_type) {    $.post("{{ route('audit.index') }}/" + id, {      id: id,      type: type,      userid: userid,      group_id: group_id,      dynamic_id: dynamic_id,      dynamic_type: dynamic_type,      _token: "{{ csrf_token() }}",      _method: "PUT"    }, function (data) {      if (data.result == 0) {        table.ajax.reload();        toastr.success("操作成功!");      }    });  }   $("#is_audit").select2({    placeholder: "請選擇狀態",    minimumResultsForSearch: Infinity  });   // 搜索  $("#searchBtn").click(function(){    table.draw();  });</script>

本文主要記錄給自己看,不做具體的說明了。

參考鏈接

dataTables 官方文檔

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品爽爽ⅴa在线观看| 日本一本a高清免费不卡| 最近中文字幕日韩精品| 一本色道久久88精品综合| 久热99视频在线观看| 久久综合88中文色鬼| 日韩a**站在线观看| 狠狠躁天天躁日日躁欧美| 国产成人av在线| 日韩免费看的电影电视剧大全| 日本一本a高清免费不卡| 久久久久久久久国产| 亚洲日韩中文字幕| 精品视频在线观看日韩| 亚洲天堂av高清| 亚洲激情视频在线播放| 欧美专区福利在线| 永久免费看mv网站入口亚洲| 亚洲精品v欧美精品v日韩精品| 亚洲一区av在线播放| 九九热视频这里只有精品| 久久五月天色综合| 国产精品视频一| 欧美在线观看网址综合| 亚洲男人天堂古典| 亚洲精品永久免费精品| www.日韩视频| 日韩高清人体午夜| 黑人巨大精品欧美一区免费视频| 欧美极品美女视频网站在线观看免费| 日本中文字幕不卡免费| 亚洲综合日韩中文字幕v在线| 狠狠色噜噜狠狠狠狠97| 亚洲三级av在线| 国产精品天天狠天天看| 久久影视电视剧凤归四时歌| 久久久国产成人精品| 日本久久久久久| 日本国产一区二区三区| 欧美一级视频免费在线观看| 欧美日韩裸体免费视频| 伊人激情综合网| 国内精品一区二区三区四区| 国产欧美日韩精品专区| 欧美日韩一区二区三区在线免费观看| 91精品国产综合久久久久久久久| 高清欧美性猛交| yw.139尤物在线精品视频| 国产美女精品视频免费观看| 亚洲国产天堂久久综合| 国产精品久久久久久超碰| 国产在线精品一区免费香蕉| 国产精品96久久久久久| 久久久人成影片一区二区三区观看| 欧美日韩午夜激情| 亚洲午夜久久久影院| 高清一区二区三区日本久| 成年人精品视频| 久久精品视频导航| 国产欧美日韩视频| 亚洲综合中文字幕在线| 亚洲第一福利网站| 成人黄色av免费在线观看| 色婷婷综合久久久久| 国产精品a久久久久久| 色妞一区二区三区| 欧美一性一乱一交一视频| 国产一区二区三区视频免费| 国产香蕉一区二区三区在线视频| 日韩中文在线中文网在线观看| 亚洲天堂免费视频| 国产视频久久网| 日韩av免费在线看| 一本色道久久综合狠狠躁篇的优点| 日本一本a高清免费不卡| 欧美日韩国产精品| 中文字幕欧美在线| 国产精品h片在线播放| 91美女福利视频高清| 国产精品自拍偷拍| 色综合色综合网色综合| 欧美成人免费在线观看| 欧美美最猛性xxxxxx| 97精品视频在线播放| 中国china体内裑精亚洲片| 欧美国产视频一区二区| 中文亚洲视频在线| 亚洲精品一区二区久| 最近2019中文字幕大全第二页| 欧美精品videossex88| 激情久久av一区av二区av三区| 国产精品女主播| 成人黄色免费在线观看| 一区二区日韩精品| 国产视频在线观看一区二区| 日韩中文在线视频| 精品福利在线视频| 精品国产一区二区三区四区在线观看| 国产精品高潮粉嫩av| 精品色蜜蜜精品视频在线观看| 国产女同一区二区| 国产精品国产三级国产aⅴ浪潮| 中文字幕日韩欧美精品在线观看| 亚洲精品一区久久久久久| 97涩涩爰在线观看亚洲| 国产精品网红直播| 久久久国产精品免费| 国产精品第七十二页| 亚洲午夜未满十八勿入免费观看全集| 欧美成人精品xxx| 日韩美女福利视频| 一区二区日韩精品| 国产精品久久久久久久久男| 亚洲视频综合网| 97精品国产91久久久久久| 日韩在线一区二区三区免费视频| 久久精品国产久精国产思思| 日韩中文在线中文网在线观看| 久久综合亚洲社区| 亚洲一区二区在线| 久久精品99国产精品酒店日本| 亚洲精品国精品久久99热一| 91精品91久久久久久| 亚洲第一区中文99精品| 欧美一区二区三区免费观看| 亚洲最大在线视频| 色综合伊人色综合网| 欧美成人精品一区二区| 亚洲免费视频网站| 日本免费一区二区三区视频观看| 亚洲第一精品夜夜躁人人躁| 精品一区二区三区电影| wwwwwwww亚洲| 成人国产精品色哟哟| www.亚洲天堂| 国产三级精品网站| 欧美视频国产精品| 国产亚洲精品成人av久久ww| 欧美激情小视频| 中文字幕亚洲欧美日韩高清| 国产免费一区二区三区在线能观看| 国产精品久久精品| 久久久久女教师免费一区| 亚洲精品美女在线| 国产成人精品网站| 成人免费高清完整版在线观看| 日韩福利视频在线观看| 日韩欧美第一页| 国产精品视频26uuu| 亚洲人成免费电影| 综合136福利视频在线| 夜夜嗨av一区二区三区四区| 国自在线精品视频| 日本国产精品视频| 日韩国产在线看| 亚洲另类欧美自拍| 欧美成人亚洲成人日韩成人| 国产精品欧美风情| 中文字幕日韩高清| 精品激情国产视频| 久热精品视频在线免费观看| 秋霞av国产精品一区| 欧美尺度大的性做爰视频| 国产精品视频99|