Laravel: 5.6.39
PHP: 7.2.10
Yajra Table: 8.0
示例代码
$(document).ready( function() {
var url = "{{ url('/admin/videos') }}";
$(function() {
var oTable = $('#admin-videos').DataTable({
dom: "<'row'<'col-xs-12'<'col-xs-6'l><'col-xs-6'p>>r>"+
"<'row'<'col-xs-12't>>"+
"<'row'<'col-xs-12'<'col-xs-6'i><'col-xs-6'p>>>",
processing: true,
serverSide: true,
ajax: {
url: url,
data: function (d) {
d.category = $("#category option:selected").val();
d.language = $("#language option:selected").val();
}
},
columns: [
{ data: 'video_checkbox', name: 'video_checkbox' },
{ data: 'created_at', name: 'created_at' },
{ data: 'video_label', name: 'video_label' },
{ data: 'video_link', name: 'video_link' },
{ data: 'view', name: 'view' },
{ data: 'video_category', name: 'video_category' },
],
stateSave: true,
bDestroy: true,
});
$('#search-form').on('submit', function(e) {
oTable.draw();
e.preventDefault();
});
});
});
现在,如果我将删除dom
搜索和过滤器,都可以看到,但搜索仍然无法进行,如果我将删除过滤器,则仅搜索有效,我认为应该对dom进行一些自定义,这将允许搜索和过滤器。
在documentation中也没有搜索。
有一个option可以像下面的代码那样启用搜索,但是 似乎没有用,因为我已经在上面的代码中删除了dom属性。
search: {
"regex": true
}
答案 0 :(得分:0)
我不知道搜索是如何自动进行的,但是我已经为我的要求进行了编码,并且可以正常工作,并给出了一些想法,例如如何实现。
您可以使用$request->get('search')['value']
获取搜索词,现在编写代码来检查条件是否得到满足,并在控制器或模型中过滤结果。下面是在Controller中执行此操作的代码。
return DataTables::eloquent($videos)
->filter(function ($query) use ($request) {
if ($request->has('category') && ! is_null($request->get('category'))) {
$query->where('video_category', $request->get('category'));
}
if ($request->has('language') && ! is_null($request->get('language')) ) {
$query->where('video_language', $request->get('language'));
}
if ($request->has('search') && ! is_null($request->get('search')['value']) ) {
$regex = $request->get('search')['value'];
return $query->where('your_field', 'like', '%' . $regex . '%');
});
}
})->toJson();