在Laravel中使用DataTables插件的方法
2018-09-07 14:39
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 请求。
本文主要记录给自己看,不做具体的说明了。
参考链接
dataTables 官方文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
上一篇:PHP:风雨欲来 路在何方?
下一篇:用PHP制作静态网站的模板框架
文章标题:在Laravel中使用DataTables插件的方法
文章链接:http://soscw.com/index.php/essay/13740.html