рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдореЗрдВ рдХрд╕реНрдЯрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдПрдХ рдмрд╛рдд рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрд╛ред
рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рджреЗрдВред
рдЕрдкрдиреЗ рдбреАрдЯреА рд╕реЗрд╡рд╛ рд╡рд░реНрдЧ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ ajax()
рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЗ рд▓рд┐рдП ajax json рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рддреА рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЕрдкрдиреЗ json рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдбрд┐рдЯ / рдХреЙрд▓рдо рдЬреЛрдбрд╝рдХрд░ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЖрджрд┐ ...
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдзрд┐ query()
рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдбреАрдЯреА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЖрдкрдХреА рдЖрдзрд╛рд░ рдХреНрд╡реЗрд░реА рдХреЛ рд╕рдВрднрд╛рд▓рддреА рд╣реИред рдХрдХреНрд╖рд╛ рдореЗрдВ request()
рдкрджреНрдзрддрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк Request
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ:
public function ajax()
{
return $this->datatables
->eloquent($this->query())
->addColumn('action', 'audits.audit.datatables.action')
->make(true);
}
public function query()
{
$audits = Audit::query();
if ($this->request()->get('auditType')) {
$audits->where('type', $this->request()->get('auditType'));
}
return $this->applyScopes($audits);
}
рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред рдЬрд▓реНрдж рд╣реА рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рдбреЗрдореЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдорд┐рд▓ рдЧрдпрд╛ред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЕрдЬрд╛рдХреНрд╕ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ рдФрд░ рдлрд┐рд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░реЗрдВ?
рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ preXHR
рдЗрд╡реЗрдВрдЯ рдкрд░ рдЕрдкрдиреЗ js рдХреЛ рд╣реБрдХ рдХрд░реЗрдВред https://datatables.net/reference/event/preXhr
рдЕрдм рдХрд╕реНрдЯрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдкреЗрдЬрд┐рдиреЗрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред
рд╣рд╛рдп рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ ???
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ @yajra рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗрдВред рдпрд╛ рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдирд┐рдкреЗрдЯ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
'рдСрдбрд┐рдЯ рдЯрд╛рдЗрдк' рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрд░реЛрдз рдЙрджрд╛рд╣рд░рдг рдореЗрдВ - рдпрд╣ рдХрд╣рд╛рдБ рд╕реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдкреНрд░рддрд┐рд╢реЛрдз? рдХреНрдпрд╛ рдЗрд╕реЗ рдХрд┐рд╕реА рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ, рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ:
$ ('# dataTableBuilder')
.on ('preXhr.dt', function (e, settings, data) {
data.auditType = $ ('рдЗрдирдкреБрдЯ [рдирд╛рдо = рдСрдбрд┐рдЯ рдЯрд╛рдЗрдк')ред Val ();
};
<input type="text" onchange="abc(this.value)" >
function abc(a) {
$('.datatable')
.on('preXhr.dt', function ( e, settings, data ) {
data.auditType = a;
});
}
рд╕рд╛рд╣рдм, рдореИрдВ рднреА datatable рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░, рдХреНрдпреЛрдВ рдореИрдВ onchange рдХреЗ рдмрд╛рдж рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ..
рд╣рд╛рдп рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдореИрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдЗрд╕ рддрд░рд╣, datatable рдкрд░ рдкреБрдирдГ рд▓реЛрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:
$ (рдЪрдпрдирдХрд░реНрддрд╛) .on ('рдкрд░рд┐рд╡рд░реНрддрди'), рдлрд╝рдВрдХреНрд╢рди () {
$ ('рдмрдЯрдиред рдкреБрдирдГ рд▓реЛрдб')ред рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ();
};
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯреЗрдмрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреМрди рдХрд░рддрд╛ рд╣реИред
рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░:
<input type="text" name="abc">
<div class="col-md-12">
{!! $dataTable->table(['style'=>'width:100%', 'class'=>'table table-striped table-hover']) !!}
</div>
рдХреНрд▓рд╛рдЗрдВрдЯрдбреИрдЯреЗрдмрд▓:
`
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдХреНрд╡реЗрд░реА ()
{{
$ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди_рдЖрдИрдбреА = рдкреНрд░рд╛рдорд╛рдгрд┐рдХ :: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ () -> рдПрдХреНрдЯрд┐рд╡рд╡рд░реНрдХ () -> рдЖрдИрдбреА;
$clients = Client::where('workstation_id', $workstation_id)->with('addresses')->with('devices');
if ($this->request()->get('abc')) {
$clients->where('name', $this->request()->get('abc'));
}
return $this->applyScopes($clients);
}
JS:
$('#dataTableBuilder').on('preXhr.dt', function ( e, settings, data ) {
data.abc= $('input[name=abc]').val();
});
`
рдХреГрдкрдпрд╛ рдорджрдж рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рд╡рд╛рд▓рд╛ рдХреМрди рд╣реИред
рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░ рдорд╛рди рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди, рдХреАрдк рдпрд╛ рдХреАрдбрд╛рдЙрди рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ:
$(selector).on('change',function(){
$('.buttons-reload').click();
});
рдмрдЯрди-рд░реАрд▓реЛрдб рд╡рд╣ рдмрдЯрди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреНрд▓рд╛рд╕ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:
public function html()
{
return $this->builder()
->columns($this->getColumns())
->addAction(['width' => '35%'])
->parameters([
'language' => [
'url' => '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json'
],
"lengthMenu" => [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
"pagingType" => "full_numbers",
'dom' => 'lBfrtip',
'scrollX' => true,
**'buttons' => [
'reload'
],**
]);
}
рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдЗрдирдкреБрдЯ рдкрд░ рдХреАрдЬрд╝ рджрдмрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдИрд╡реЗрдВрдЯ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЗ рд░реАрд▓реЛрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХреЛ рднрдбрд╝рдХрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреНрд▓рд╛рд╕ рдЗрдирдкреБрдЯ рд╡реИрд▓реНрдпреВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдХреНрд╡реЗрд░реА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИред
рдирдорд╕реНрддреЗ,
рдЗрд╕рдиреЗ рдХреНрд╡реЗрд░реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдкрд╛рд╕ рдХрд┐рдП рдбреЗрдЯрд╛ред рдХреЛрдИ рднреА рд╕реБрдЭрд╛рд╡ рд╣реИ?
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!!! рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ 'рдкрд░рд┐рд╡рд░реНрддрди рдкрд░' рдШрдЯрдирд╛ рдореЗрдВ preXhr.dt рдХреЛ рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдпрд╛:
$('input[name=abc]').on('change',function(){
$('#dataTableBuilder').on('preXhr.dt', function ( e, settings, data ) {
data.abc= $('input[name=abc]').val();
});
$('.buttons-reload').click();
});
рдореИрдВ рдЕрднреА рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБ рдЬреЛ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реИ;)
$(document).ready(function () {
$('.js-datatable-filter-form :input').on('change', function (e) {
window.LaravelDataTables["dataTableBuilder"].draw();
});
$('#dataTableBuilder').on('preXhr.dt', function ( e, settings, data ) {
$('.js-datatable-filter-form :input').each(function () {
data[$(this).prop('name')] = $(this).val();
});
});
});
рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░ рдбреЗрдЯрд╛ request()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реНрдХреЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдмреИрдХ-рдПрдВрдб рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
<?php namespace App\DataTables\Scopes;
use Yajra\Datatables\Contracts\DataTableScopeContract;
class ArchivedScope implements DataTableScopeContract
{
public function apply($query)
{
$query->onlyTrashed();
return $query;
}
}
рдЙрджрд╛рд╣рд░рдг рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐:
public function archived(UserDataTable $dataTable)
{
$dataTable->addScope(new App\DataTables\Scopes\ArchivedScope());
return $dataTable->render('admin.users.index');
}
рдпрд╣рд╛рдВ apply
рдкрджреНрдзрддрд┐ рдореЗрдВ request()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдиреЛрдЯ рдХрд░реЗрдВред
<?php namespace App\DataTables\Scopes;
use Yajra\Datatables\Contracts\DataTableScopeContract;
class RoleScope implements DataTableScopeContract
{
public function apply($query)
{
if ($roleId = request('role_id')) {
$query->where('role_id', $roleId);
}
return $query;
}
}
рд╕реНрдХреЛрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ: https://datatables.yajrabox.com/services/scope
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдЕрднреА рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдБ рдЬреЛ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реИ;)
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░ рдбреЗрдЯрд╛
request()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реНрдХреЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдмреИрдХ-рдПрдВрдб рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВредрдЙрджрд╛рд╣рд░рдг рд╕реНрдХреЛрдк:
рд╕рдВрдЧреНрд░рд╣реАрдд рджрд╛рдпрд░рд╛
рдЙрджрд╛рд╣рд░рдг рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐:
рднреВрдорд┐рдХрд╛ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢
рдпрд╣рд╛рдВ
apply
рдкрджреНрдзрддрд┐ рдореЗрдВrequest()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдиреЛрдЯ рдХрд░реЗрдВредрд╕реНрдХреЛрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ: https://datatables.yajrabox.com/services/scope