您现在的位置是:网站首页> 编程资料编程资料
在Laravel中使用DataTables插件的方法_php实例_
2023-05-25
497人已围观
简介 在Laravel中使用DataTables插件的方法_php实例_
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 请求。
本文主要记录给自己看,不做具体的说明了。
参考链接
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- ThinkPHP实现的rsa非对称加密类示例_php实例_
- PHP中实现中文字串截取无乱码的解决方法_php实例_
- php实现表单提交上传文件功能_php实例_
- PHP封装的非对称加密RSA算法示例_php技巧_
- thinkPHP3.2.3结合Laypage实现的分页功能示例_php实例_
- Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法_php技巧_
- PHP测试框架PHPUnit组织测试操作示例_php技巧_
- php empty 函数判断结果为空但实际值却为非空的原因解析_php实例_
- PHP排序二叉树基本功能实现方法示例_php技巧_
- Thinkphp5+uploadify实现的文件上传功能示例_php实例_
点击排行
本栏推荐
