婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 在Laravel中使用DataTables插件的方法

在Laravel中使用DataTables插件的方法

熱門標簽:拉薩打電話機器人 沈陽人工智能電銷機器人公司 寶安400電話辦理 智能外呼電銷系統 電銷機器人-快迭智能 合肥外呼系統app h5 地圖標注 高識別電銷機器人 哈爾濱400電話辦理到易號網

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 官方文檔

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

您可能感興趣的文章:
  • PHP框架Laravel插件Pagination實現自定義分頁
  • 推薦幾款用 Sublime Text 開發 Laravel 所用到的插件
  • laravel yajra插件 datatable的使用詳解

標簽:巴中 山東 張家口 梅州 林芝 威海 成都 泰州

巨人網絡通訊聲明:本文標題《在Laravel中使用DataTables插件的方法》,本文關鍵詞  在,Laravel,中,使用,DataTables,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在Laravel中使用DataTables插件的方法》相關的同類信息!
  • 本頁收集關于在Laravel中使用DataTables插件的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线综合亚洲欧美在线视频| 精品亚洲aⅴ乱码一区二区三区| 精品免费99久久| 欧美顶级少妇做爰| 欧美色爱综合网| 在线亚洲精品福利网址导航| 91视频你懂的| 色婷婷av一区二区三区之一色屋| 波多野结衣一区二区三区| 不卡一区二区在线| 99国产精品久久久久久久久久久| 91视频观看视频| 欧美日精品一区视频| 91麻豆精品91久久久久同性| 精品日韩在线一区| 中文字幕欧美日韩一区| 最新高清无码专区| 亚洲成在人线在线播放| 美洲天堂一区二卡三卡四卡视频| 精品亚洲成a人| 国产盗摄视频一区二区三区| 成人爽a毛片一区二区免费| www.99精品| 欧美亚洲尤物久久| 精品国产污污免费网站入口| 国产日韩影视精品| 亚洲成a人片在线不卡一二三区| 午夜视黄欧洲亚洲| 国产传媒一区在线| 在线观看亚洲精品| 精品国产伦理网| 亚洲人成精品久久久久久 | 一二三区精品视频| 国产一区二区不卡在线| 日本高清视频一区二区| 午夜视频在线观看一区| 国产麻豆一精品一av一免费| 欧美一区二区在线视频| 亚洲欧美激情视频在线观看一区二区三区 | 毛片av一区二区三区| 日韩av电影免费观看高清完整版 | 国产69精品久久久久777| 成人av电影在线观看| 91国偷自产一区二区开放时间 | 亚洲一区视频在线| 国产精品一级二级三级| 欧美日韩一二三区| 欧美国产日产图区| 蜜臀久久99精品久久久久宅男 | 成人深夜在线观看| 欧美肥妇bbw| 国产精品久久久久久亚洲伦| 久久国产乱子精品免费女| 色综合久久99| 欧美韩日一区二区三区四区| 日本网站在线观看一区二区三区 | 精品国产乱码久久久久久夜甘婷婷 | 日韩欧美一区在线| 亚洲第一久久影院| 91女厕偷拍女厕偷拍高清| 日韩美女一区二区三区四区| 亚洲第一搞黄网站| 在线亚洲免费视频| 综合色中文字幕| 91在线免费视频观看| 91在线视频免费观看| 国产精品久久久久久户外露出 | 国产精品国产三级国产有无不卡 | 久久精品视频一区二区| 五月综合激情网| 久久久www免费人成精品| 99riav久久精品riav| 日韩成人精品在线| 亚洲成av人片一区二区| 美脚の诱脚舐め脚责91| 欧美日韩免费不卡视频一区二区三区| 亚洲图片另类小说| 日韩精品一区二| 欧美久久久久久久久久| 在线免费观看日本一区| 国产人妖乱国产精品人妖| 色伊人久久综合中文字幕| 在线视频国内自拍亚洲视频| 国产精品天天看| 国产精品夜夜爽| 欧美一区二区三区日韩视频| 蜜桃av一区二区| 亚洲午夜久久久久久久久久久 | 日韩毛片视频在线看| 欧美性猛交xxxx乱大交退制版| 狠狠色丁香久久婷婷综合丁香| 国产一区二区三区最好精华液| 国产福利精品一区| 国产精品国产自产拍高清av王其| 成人免费看视频| 亚洲精品国产成人久久av盗摄| 欧美三区在线视频| 经典一区二区三区| 中文欧美字幕免费| 欧美在线视频全部完| 秋霞午夜av一区二区三区| 亚洲精品一线二线三线| 成人国产亚洲欧美成人综合网| 欧美激情一区二区三区四区| 在线一区二区三区| 国模无码大尺度一区二区三区| 一区在线中文字幕| 欧美变态tickling挠脚心| 粉嫩久久99精品久久久久久夜| 一区二区三区自拍| 2020国产精品自拍| 91原创在线视频| 奇米影视一区二区三区小说| 综合久久久久久| 久久久久99精品国产片| 欧美怡红院视频| 国产精品羞羞答答xxdd| 亚洲综合久久久| 欧美国产欧美综合| 日韩欧美资源站| 欧美主播一区二区三区| 豆国产96在线|亚洲| 国内成人自拍视频| 一个色综合av| 国产精品色在线观看| 欧美精品一级二级三级| 91在线视频观看| 韩国成人在线视频| 日韩成人dvd| 亚洲第一主播视频| 一区二区三区电影在线播| 国产欧美一区二区精品婷婷| 欧美一区二区三区四区久久| 99久久精品国产一区| 国产成人精品三级| 极品尤物av久久免费看| 青草国产精品久久久久久| 一级日本不卡的影视| 亚洲美女电影在线| 国产精品每日更新| 2021中文字幕一区亚洲| 精品国产一区二区三区不卡 | 精品国产一区二区国模嫣然| 欧美日韩一区 二区 三区 久久精品| 东方aⅴ免费观看久久av| 国产在线麻豆精品观看| 日韩极品在线观看| 首页国产欧美久久| 日韩黄色一级片| 五月婷婷综合激情| 日韩国产在线一| 亚洲mv在线观看| 日韩精品视频网站| 蜜桃免费网站一区二区三区| 美女脱光内衣内裤视频久久网站 | 色综合一个色综合亚洲| 在线亚洲人成电影网站色www| 色呦呦一区二区三区| 99久久777色| 欧美亚洲国产bt| 欧美日韩免费不卡视频一区二区三区| 91亚洲精品久久久蜜桃| 色综合色狠狠天天综合色| 91碰在线视频| 欧美另类z0zxhd电影| 精品嫩草影院久久| 中文字幕欧美一| 天天av天天翘天天综合网| 奇米影视一区二区三区| 国产精品一区在线观看乱码| 成人激情图片网| 精品视频在线免费看| 日韩欧美国产午夜精品| 久久久美女毛片| 国产精品久久久久影院老司| 亚洲午夜羞羞片| 久久精品国产精品青草| 国产成a人无v码亚洲福利| 色网站国产精品| 精品剧情在线观看| 国产精品护士白丝一区av| 天天色综合成人网| 国产成人午夜精品5599| 日本韩国一区二区三区| 久久一夜天堂av一区二区三区| 综合久久综合久久| 日韩在线a电影| 91免费观看视频| 精品第一国产综合精品aⅴ| 亚洲视频在线观看一区| 久久爱www久久做| 色婷婷综合久久久久中文| 精品国产一区二区亚洲人成毛片| 亚洲精品成人天堂一二三| 久久国产剧场电影| 欧美在线免费播放| 国产欧美一区二区精品仙草咪| 性做久久久久久| 91免费看`日韩一区二区| 26uuu久久综合|