加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Laravel中使用DataTables插件的方法

发布时间:2020-12-14 20:04:59 所属栏目:大数据 来源:网络整理
导读:DataTables 是一个 jQuery 的表格插件,记录一下在 Laravel 中使用的常用功能和用法,比如 ajax 获取数据,自定义搜索,效果展现,选项说明等等,有一些细节记录下来方便以后查看。 Laravel 控制器方法 接受 ajax get 请求,返回数据。 dataTables 会自带一

DataTables 是一个 jQuery 的表格插件,记录一下在 Laravel 中使用的常用功能和用法,比如 ajax 获取数据,自定义搜索,效果展现,选项说明等等,有一些细节记录下来方便以后查看。

Laravel 控制器方法

接受 ajax get 请求,返回数据。

dataTables 会自带一些参数过来,需要按照格式返回数据,比如分页等。见 dataTables 官方文档说明。

代码如下:

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,2])) {
return response()->json(['error' => '缺少参数!']);
}

$builder = Dynamics::select(['id',$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','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 请求。

"; }); return html; },"targets": 6 },row) { if (data == 0) { return "未审核"; } else if (data == 1) { return "审核通过"; } else if (data == -1) { return "审核不通过"; } },"targets": 8 },row) { if (row.is_audit == 0) { return "通过 不通过"; } return "-"; },"targets": 10 } ],"createdRow": function (row,data,index) { $('td',row).eq(4).attr('style','word-break:break-all'); $('td',row).eq(2).attr('style',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,userid,group_id,dynamic_id,dynamic_type)
});

// 审核操作
function audit(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 type="text/javascript">
$dataTable = $("#dataTable");
var table = $dataTable.DataTable({
"processing": true,last: "最后一页"
}
}
});

$dataTable.find('tbody').on('click',dynamic_type)
});

// 审核操作
function audit(id,function (data) {
if (data.result == 0) {
table.ajax.reload();
toastr.success("操作成功!");
}
});
}

$("#is_audit").select2({
placeholder: "请选择状态",minimumResultsForSearch: Infinity
});

// 搜索
$("#searchBtn").click(function(){
table.draw();
});

本文主要记录给自己看,不做具体的说明了。

参考链接

dataTables 官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读