netvibes / datatablehandler
Handles the Prime Vue data table.
Installs: 240
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
Type:project
This package is auto-updated.
Last update: 2025-05-31 00:35:14 UTC
README
Installation
Run
composer require netvibes/datatablehandler
Add to controller.php
use Netvibes\Datatablehandler\DataTableService;
public function paginateIndex($request, $indexQuery, $withColumns = [], $returnPaginated = true)
{
$processedDataTable = DataTableService::process($request->query('lazyEvent'), $indexQuery, $withColumns, $returnPaginated);
return $processedDataTable;
}
Add to your Models to allow global filtering on these columns / relation->columns
public $filters = [
'column1',
'column2',
'relation' => [
'column1'
]
];
Sorting is not possible on many-to-many or one-to-many relations
Usage
use in any other controller
$paginatedResponse = $this->paginateIndex($request, new Model(), ['relations'], true);
return Response()->json($paginatedResponse);
In case of more complex queries
$arrayResponse = $this->paginateIndex($request, new Model(), ['relations'], false);
$indexQuery = $arrayResponse['query'];
// Perform extra queries here
$indexQuery = $indexQuery->where('column', false);
$indexQuery = $indexQuery->where('column2', 'parameter');
// query needs to be paginated
return Response()->json($indexQuery->paginate($arrayResponse['pages']));
URL params:
? page = 1
& lazyEvent = {
"first":0,
"rows":10,
"sortField":"order",
"sortOrder":1,
"filters":{
"global":{
"value":null,
"matchMode":"contains"
}
}
}