Initial commit
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Concerns;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/**
|
||||
* Wspólne wyznaczanie parametrów sortowania list (nagłówki <x-sortable-th>).
|
||||
* Kontroler udostępnia whitelistę kolumn przez stałą self::SORTABLE
|
||||
* (klucz nagłówka => kolumna SQL). Zapobiega wstrzyknięciu dowolnej kolumny
|
||||
* do ORDER BY - bierzemy tylko klucze z whitelisty.
|
||||
*/
|
||||
trait SortsLists
|
||||
{
|
||||
/**
|
||||
* @return array{0: ?string, 1: string} [klucz sortowania lub null, kierunek 'asc'|'desc']
|
||||
*/
|
||||
protected function sortParams(Request $request): array
|
||||
{
|
||||
$sort = $request->query('sort');
|
||||
$dir = $request->query('dir') === 'desc' ? 'desc' : 'asc';
|
||||
|
||||
if (! is_string($sort) || ! array_key_exists($sort, static::SORTABLE)) {
|
||||
return [null, $dir];
|
||||
}
|
||||
|
||||
return [$sort, $dir];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user