34 lines
1022 B
PHP
34 lines
1022 B
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Concerns;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
trait ParsesDataTableQuery
|
|
{
|
|
/**
|
|
* @return array{search: string, sort: string, direction: 'asc'|'desc'}
|
|
*/
|
|
protected function parseDataTableQuery(Request $request): array
|
|
{
|
|
return [
|
|
'search' => $request->string('search')->trim()->toString(),
|
|
'sort' => $request->string('sort')->toString(),
|
|
'direction' => $request->string('direction')->toString() === 'desc' ? 'desc' : 'asc',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param array{search: string, sort: string, direction: 'asc'|'desc'} $query
|
|
* @return array{search: string, sort: string, direction: 'asc'|'desc'|null}
|
|
*/
|
|
protected function dataTableFilters(array $query, array $extra = []): array
|
|
{
|
|
return array_merge([
|
|
'search' => $query['search'],
|
|
'sort' => $query['sort'],
|
|
'direction' => $query['sort'] !== '' ? $query['direction'] : null,
|
|
], $extra);
|
|
}
|
|
}
|