DataTables插件怎么在Laravel中使用-创新互联
DataTables插件怎么在Laravel中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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插件怎么在Laravel中使用-创新互联
当前链接:http://www.jxjierui.cn/article/cccedi.html


咨询
建站咨询
