рдореБрдЭреЗ рдХрд╕реНрдЯрдо рдбреНрд░реЙрдк рдбрд╛рдЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЕрдм рдореБрдЭреЗ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ [рдиреЛрдЯ: рдореБрдЭреЗ рд▓рд╛рд░рд╡реЗрд▓ рдХреНрд╡реЗрд░реА рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореВрд▓реНрдп рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХрд╕реНрдЯрдо рдореВрд▓реНрдп рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕ рдХрд╕реНрдЯрдо рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред]
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ jquery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдЬреЛрдбрд╝рд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рд░реНрд╡рд╛рд▓ рдХреНрд╡реЗрд░реА рдореЗрдВ рдЗрд╕ рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
$(function () {
var t = $('#user').DataTable({
order: [[ 0, 'desc' ]],
processing: true,
serverSide: true,
ajax: {
url: '{!! route('datatables.data') !!}',
data: function(d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
}
},
columns: [
{ data: 'id', name: 'id' },
{ data: 'name', name: 'name' },
{ data: 'email', name: 'email' },
{ data: 'arrival_date', name: 'arrival_date', orderable: true, searchable: true },
{ data: 'pick_up', name: 'pick_up', orderable: true, searchable: true },
{ data: 'destination', name: 'destination', orderable: true, searchable: true},
{ data: 'trekking_start_date', name: 'trekking_start_date', orderable: true, searchable: true},
{ data: 'trekking_end_date', name: 'trekking_end_date', orderable: true, searchable: true},
{ data: 'action', name: 'action', orderable: false, searchable: false},
]
});
});
$(document).ready(function() {
$('<label style="margin-left: 10px;">Filter by ' +
'<select class="form-control input-sm">'+
'<option value="volvo">Completed Trip</option>'+
'<option value="saab">Upcoming Trip</option>'+
'</select>' +
'</label>').appendTo("#user_wrapper #user_length");
});
рдФрд░ рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ рдореЗрд░рд╛ рдХреНрд╡реЗрд░реА рдХреЛрдб
public function getClients(Request $request)
{
if($request->ajax()) {
return Datatables::of(DB::select(DB::Raw('SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM role_user) ORDER BY users.id DESC')))
//}))
->addColumn('arrival_date', function($user){
if(isset(Helper::getFlightsByClientID($user->id)->arrival_date)) {
return date('M j, Y', strtotime(Helper::getFlightsByClientID($user->id)->arrival_date));
} else {
return 'N/A';
}
})
->addColumn('pick_up', function($user){
if(isset(Helper::getFlightsByClientID($user->id)->pick_up)) {
return Helper::getFlightsByClientID($user->id)->pick_up == 1 ? 'Yes' : 'No';
} else {
return 'N/A';
}
})
->addColumn('destination', function($user){
if(isset(Helper::getTreksByClientID($user->id)->trekking_region_id)) {
return Helper::getTrekByID(Helper::getTreksByClientID($user->id)->trekking_region_id)->name;
} else {
return 'N/A';
}
})
->addColumn('trekking_start_date', function($user){
if(isset(Helper::getTreksByClientID($user->id)->trekking_start_date)) {
return date('M j, Y', strtotime(Helper::getTreksByClientID($user->id)->trekking_start_date));
} else {
return 'N/A';
}
})
->addColumn('trekking_end_date', function($user){
if(isset(Helper::getTreksByClientID($user->id)->trekking_end_date)) {
return date('M j, Y', strtotime(Helper::getTreksByClientID($user->id)->trekking_end_date));
} else {
return 'N/A';
}
})
->addColumn('action', function($user){
$html = '';
$html .= '<a class="btn bg-green btn-flat btn-xs" href="'.route('user.clients.edit', $user->id).'">Edit</a>';
if(auth()->user()->hasRole('superadmin')) {
$html .= ' <a onclick="if(!confirm(\'Are u sure to delete?\')) return false;" class="btn bg-red btn-flat btn-xs" href="'.route('user.clients.delete', $user->id).'">Delete</a>';
}
return $html;
})
->make(true);
} else {
abort(400, 'Bad Request.');
}
}
рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдХреЛрдб рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдЬреЛ рд╕рдВрджрд┐рдЧреНрдз рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдкреЗрд╕реНрдЯ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдбрд╛рдЙрди php рдХреЛрдб рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: md5-29f7d4c1ff52f0e396b313bfe2550e56
@ рд╢рдВрдЦрджреЗрд╡рдкрд╛рдж рдЖрдк рдЗрд╕реЗ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреЛ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдореЗрдВ рдбреЗрдЯрд╛рдЯреИрдмрд▓реНрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрд╡реЗрд░реА рдмрд┐рд▓реНрдбрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
$model = new Example();
$model->where('column_to_filter','=',$this->request->get('filter_by'));
return datatables()->eloquent($model);
рдЖрдк рдмреЗрд╢рдХ рд╕рд╢рд░реНрдд IFs рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
$model = new Example();
if($this->request->has('name')) {
$model->where('name','=','predefined value');
}
return datatables()->eloquent($model);
рдпрджрд┐ рдЖрдк рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбреЙрдХреНрд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрддрдВрдн рдЦреЛрдЬ , рдХрд╕реНрдЯрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ
рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдХреА рддрд░рд╣ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреЛ рдХреИрд╕реЗ рдмрд╛рдВрдзреЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╕реНрдЯрдо jquery рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдБрдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд╛рди рддрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдбреНрд░реЙрдкрдбрд╛рдЙрди рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рд╣реЛред [рдХреГрдкрдпрд╛ рдореЗрд░рд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ]
рдЪрдпрди рдмреЙрдХреНрд╕ рдкрд░ id
рдЬреЛрдбрд╝реЗрдВред
<select class="form-control input-sm" id="custom-filter">
рдлрд┐рд░ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
ajax: {
url: '{!! route('datatables.data') !!}',
data: function(d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
d.filter = $('#custom-filter').val();
}
},
рдлрд┐рд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВред
if ($filter = request('filter')) {
$query->where('filter', $filter);
}
рдлрд╝рд┐рд▓реНрдЯрд░ рдмрджрд▓рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдбреНрд░реЙ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
<select class="form-control input-sm" id="custom-filter" onchange="$('#user').DataTable().draw()">
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдзрд░реНрдорд╛рдВрддрд░рд┐рдд
DB::select(DB::Raw('SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM role_user) ORDER BY users.id DESC'))
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:
DB::table('users')->whereNot(...);
рдзрдиреНрдпрд╡рд╛рдж рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗ рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдЯрд╛рд░ рджреЗрдирд╛ рди рднреВрд▓реЗрдВред :) рдзрдиреНрдпрд╡рд╛рдж!
рдбреНрд░реЙрдкрдбрд╛рдЙрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореЗрдВ рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдСрд░реНрдбрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рддрд┐рдерд┐ рддрдХ рдСрд░реНрдбрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдпрд╣ js
рд╕реНрддрд░ рдкрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛ рдЙрд╕ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдбрд┐рдлреЙрд▓реНрдЯ рдСрд░реНрдбрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рд╣рд╛рдВ, рдХреГрдкрдпрд╛ рдХреЛрдИ рднреА рдЙрджрд╛рд╣рд░рдгред
рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред рд░реЗрдлрд░реА рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ js api рдбреЙрдХреНрд╕ https://datatables.net/reference/api/ рджреЗрдЦреЗрдВред рдЪрд╛рд▓ рддрд╛рд▓рд┐рдХрд╛ redraw рдлрд╝рдВрдХреНрд╢рди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ js рдСрд░реНрдбрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
@yajra рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ
data: function(d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
d.filter = $('#custom-filter').val();
}
minifiedAjax()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ @ рд╕рд┐рд╕реНрдЯреЗрдорд╕реНрд╡реЗрдмрдмреНрд░реИрд╕рд┐рд▓ :
$script = '
data.name = $('input[name=name]').val();
data.email = $('input[name=email]').val();
data.filter = $('#custom-filter').val();
';
return $this
->builder()
...
->minifiedAjax($url = '', $script = null, $data = [])
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдлрд╝рд┐рд▓реНрдЯрд░ рдмрджрд▓рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдбреНрд░реЙ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдзрд░реНрдорд╛рдВрддрд░рд┐рдд
рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ: