Laravel DataTable: seberare pro data
Intre is programmadores PHP chi intrant inoghe nche nd'at a èssere de seguru calicunu chi impreat su framework Laravel comente a base pro su progetu suo. E calicunu forsis impreat DataTable pro creare a sa lestra una vista pro is datos chi benint de una base de datos. Si non connoschides DataTable, si ddu cussìgiu, ca si faghet aorrare unu muntone de traballu cun HTML e JavaScript, permitende·bos de impreare su tempus pro àtera cosa. Si cussìgiu prus che totu su pachete yajra/laravel-datatables. Sa cosa istròlica de custa integratzione primorosa est chi nemos at pensadu de permìtere de seberare is datos pro data, si esistit in sa base de datos.
Immaginamus pro esempru de tènnere una base de datos cun sa registratzione de is traballadores de un'azienda, in ue ddoe siat fintzas sa data de incumentzu de su cuntratu. No diat a èssere utilosu a seberare isceti is traballadores chi ant incumentzadu ocannu e amegant de acabbare cun su perìodu de proa?
No apo a chistionare de sa manera de impreare su pachete chi apo cussigiadu: si seis arribados finas a custu artìculu, seu seguru chi tenides giai una tabella chi funtzionat. Asinuncas, non mancant is ghias in sa retze, e si cussìgiu de impreare comente a base is documentos e is esempros chi agatades in pari cun su pachete. Su fundamentu de custas istrutziones est chi tengiais un'estensione de sa classe DataTable e chi dda siais impreende pro ingendrare is script e su còdighe HTML.
A primu, bos serbint duos campos de intrada pro pònnere s'ispàtziu de datas bòlfidu:
<input type="date" id="date_min" onchange="$('#employees').DataTable().draw(true);">
<input type="date" id="date_max" onchange="$('#employees').DataTable().draw(true);">
Impreende su tipu date, su navigadore s'at a incurare de ammustrare unu calendarieddu pro seberare sa data de incumentzu e de agabbu chene bisòngiu de impreare librerias esternas.
In sa classe DataTable bostra tenides de seguru su mètodu html, chi bolet cambiadu de aici:
public funcion html() {
return $this->builder->setTableId('employees')->minifiedAjax('', '
data.date_min = $("#date_min");
data.date_max = $("#date_max");')
// ... etc
}
Custu at a agiùnghere a su script finale is istrutziones pro agiùnghere is duas datas a is filtros imbiados a su serbidore pro su seberu de is datos. A custu puntu tocat a cambiare puru sa funtzione dataTable pro fàghere a manera chi ddas impreet:
public funcion dataTable($query) {
return datatables() ->eloquent($query)
// ... etc
->filter(function ($query) {
if (request('date_min')) {
$query->where('hire_date', '>=', request('date_min'));
}
if (request('date_max')) {
$query->where('hire_date', '<=', request('date_max'));
}
}, true);
}
Fatu. Cun custas pagas mudàntzias tenides una tabella chi fatzat a filtrare fintzas pro data e chi sighit funtzionende cun AJAX e chi duncas est còmoda de impreare, chena dèpere torrare a carrigare sa pàgina cando cambiades sa data.
Cummenta