【发布时间】:2021-07-18 03:11:27
【问题描述】:
我正在尝试在 Yajra Laravel DataTables 中创建 DataTables 下拉过滤器,但出现错误:
这是我的控制器:
public function index(Request $request)
{
$title="Data Pelamar Kerja";
if (request()->ajax()){
$query = Applicant::with('formation')->get();
// $query = Applicant::all('formation')->where('status','active')->get();
return DataTables::of($query)
->addColumn('action', function($item){
return
'
<div class="btn-group">
<a href="#!" data-toggle="tooltip" data-id="'.$item->id.'" class="btn btn-sm btn-danger delete-data">Hapus</a>
</div>
';
})
->editColumn('status', function ($item){
if ($item->status == 'quo'){
return '<span class="badge-text badge-text-small info"><ion-icon name="checkmark-circle"></ion-icon> '.$item->status.'</span>';
}else{
return '<span class="badge-text badge-text-small success"><ion-icon name="close-circle"></ion-icon>'.$item->status.'</span>';
}
})
->editColumn('formations_id', function ($item){
if ($item->formations_id == 0 || $item->formations_id == NULL){
return '<span class="text-danger">-</span>';
}else{
return $item->formation->name;
}
})
->filter(function ($instance) use ($request) {
if ($request->get('status') == 'quo' || $request->get('status') == 'melamar') {
$instance->where('status', $request->get('status'));
}
if (!empty($request->get('search'))) {
$instance->where(function($w) use($request){
$search = $request->get('search');
$w->orWhere('name', 'LIKE', "%$search%")
->orWhere('email', 'LIKE', "%$search%");
});
}
})
->addIndexColumn()
->removeColumn('id')
->rawColumns(['action','status','formations_id'])
->make(true);
}
return view('pages.admin.applicant.index',['title'=>$title]);
}
这是我的js函数:
var datatable = $('#appTable').DataTable({
processing:true,
serverSide:true,
ordering:true,
ajax:{
url:'{!! url()->current() !!}',
data: function (d) {
d.status = $('#status').val(),
d.search = $('input[type="search"]').val()
}
},
columns:[
{data: 'DT_RowIndex', name:'DT_RowIndex'},
{data:'name', name:'name'},
{data:'gender', name:'gender'},
{data:'email', name:'email'},
{data:'status', name:'status'},
{data:'formations_id', name:'formations_id'},
{
data:'action',
name:'action',
orderable:false,
searcable:false,
width:'15%'
},
],
order:[
[0,'asc']
]
});
$('#status').change(function(){
datatable.draw();
});
这是我的下拉表单:
<div class="form-group">
<label><strong>Status :</strong></label>
<select id='status' class="form-control" style="width: 200px">
<option value="">Filter Status</option>
<option value="quo">Quo</option>
<option value="melamar">Melamar</option>
</select>
</div>
我对我的代码有什么问题感到困惑。网上各种教程都试过了,都不行。
【问题讨论】:
标签: php jquery laravel datatable yajra-datatable