NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Query Builder for Laravel

Neznáme parametre a chyby

Požiadavka na filter alebo triedenie mimo allow-listu vyhodí UnknownFilter alebo UnknownSort. Obe dedia zo Symfony HttpException so stavom 400, takže ich Laravel vykreslí ako bežnú HTTP chybu:

GET /posts?filter[secret]=1

HTTP/1.1 400 Bad Request
{"message": "Requested filter(s) `secret` are not allowed. Allowed filter(s) are `status, title`."}

Režim ignore

Nastavte mode.unknown_filter alebo mode.unknown_sort na ignore a problematický kľúč sa potichu zahodí — použijú sa len povolené. Reťazec triedenia, ktorý sa zahodí celý, sa správa, akoby chýbal, takže stránku stále zoradí defaultSort(). Iná hodnota ako reject či ignore vyhodí InvalidConfigurationException namiesto hádania:

// config/query-builder.php
'mode' => [
    'unknown_filter' => 'ignore',   // drop un-allow-listed filters
    'unknown_sort'   => 'reject',   // keep sorts strict (HTTP 400)
],

Hlášky a preklady

Hlášky pochádzajú z query-builder::errors.unknown_filter a query-builder::errors.unknown_sort so zástupnými symbolmi :unknown a :allowed. Odrazené neznáme kľúče sú obmedzené — prvých 5, každý skrátený na 64 znakov, s dovetkom „…and N more“ — takže kľúče od útočníka nezaplavia odpoveď ani logy. Publikujte preklady, ak chcete zmeniť znenie alebo pridať jazyk:

// lang/vendor/query-builder/sk/errors.php
return [
    'unknown_filter' => 'Filtre :unknown nie sú povolené. Povolené filtre: :allowed.',
    'unknown_sort' => 'Triedenia :unknown nie sú povolené. Povolené triedenia: :allowed.',
];

Prehľad výnimiek

VýnimkaKedy sa vyhodí
UnknownFilterPožadovaný kľúč filtra nie je v allow-liste (režim reject). Symfony HttpException, stav 400.
UnknownSortPožadovaný kľúč triedenia nie je v allow-liste (režim reject). Symfony HttpException, stav 400.
UnsupportedOperatorFilter je deklarovaný s operátorom, ktorý nevie vykonať. LogicException — chyba vývojára, vyhodí sa pri vytvorení filtra.
AllowListAlreadyAppliedallowedFilters(), allowedSorts() alebo defaultSort() sa zavolá až potom, čo request aplikovalo preposlané volanie buildera. LogicException — chyba vývojára, nikdy ju nevyvolá request.
QueryBuilderExceptionZnačkovacie rozhranie, ktoré implementujú všetky štyri — zachyťte ho a pokryjete celú rodinu.
use RoundlyConsulting\QueryBuilder\Exceptions\QueryBuilderException;

try {
    $posts = QueryBuilder::for(Post::class, $request)
        ->allowedFilters('status')
        ->get();                        // filters apply here — lazily
} catch (QueryBuilderException $e) {
    // UnknownFilter / UnknownSort — both carry HTTP status 400
}

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.