---
title: "Validácia hodnôt filtrov — Query Builder for Laravel | Roundly"
description: "Obaľte validačné pravidlá do FilterValue, aby sa prefix operátora a sentinely odstránili ešte pred spustením pravidiel."
url: https://roundly-consulting.com/sk/open-source/navody/query-builder-for-laravel/validacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Query Builder for Laravel](https://roundly-consulting.com/sk/open-source/navody/query-builder-for-laravel.md)

# Validácia hodnôt filtrov

Zoznamový endpoint zvyčajne validuje, čo môže filter obsahovať — Rule::in(), integer, uuid — aby preklep skončil užitočnou chybou 422, nie potichu prázdnym zoznamom. Keď filter prijíma operátory, tieto pravidlá začnú odmietať samotný formát: gte:500 nie je integer a not:debug nie je platná úroveň. Pravidlo FilterValue odstráni prefix operátora a sentinely a na zvyšok spustí vaše pôvodné pravidlá:

```php
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use RoundlyConsulting\QueryBuilder\Concerns\HasPageSize;
use RoundlyConsulting\QueryBuilder\Enums\RequestedOperator;
use RoundlyConsulting\QueryBuilder\Rules\FilterValue;
use RoundlyConsulting\QueryBuilder\Support\FilterSentinel;

final class ListLogsRequest extends FormRequest
{
    use HasPageSize;

    public function rules(): array
    {
        return [
            ...$this->pageSizeRules(),
            'filter.level' => ['nullable', new FilterValue(Rule::enum(LogLevel::class))],
            'filter.code' => ['nullable', new FilterValue('integer', operators: [
                RequestedOperator::GreaterThanOrEqual,
                RequestedOperator::LessThan,
            ])],
            'filter.project' => ['nullable', new FilterValue('uuid', sentinels: [FilterSentinel::NONE])],
        ];
    }
}

// ?filter[level]=not:debug  → passes (debug is a LogLevel case)
// ?filter[code]=gte:500     → passes
// ?filter[code]=gte:garbage → 422 with the endpoint's own "integer" message
// ?filter[project]=none     → passes (the sentinel is skipped)
```

Zodpovedajúce filtre v controlleri:

```php
->allowedFilters(
    AllowedFilter::operators('level', [RequestedOperator::Not]),
    AllowedFilter::operators('code', [RequestedOperator::GreaterThanOrEqual, RequestedOperator::LessThan]),
    AllowedFilter::nullable('project', 'project_id', FilterValueShape::Uuid),
)
```

## Možnosti pravidla

new FilterValue($rules, ?array $operators = null, array $sentinels = \[\], bool $partialByDefault = false):

- $rules — pravidlá, ktoré by platili pre samotnú hodnotu: reťazec pravidiel, zoznam alebo objekt pravidla. Endpoint si ponechá vlastné hlášky aj názvy atribútov.
- operators — tokeny, ktoré deklaroval filter. Predvolene dvojica rovnosti (is, not); porovnávací alebo čiastočný filter to musí uviesť výslovne.
- sentinels — rezervované hodnoty, na ktoré odpovedá sám filter, napríklad FilterSentinel::NONE, ktoré by pravidlá stĺpca inak odmietli.
- partialByDefault — zrkadlí príznak filtra; určuje, ktorý operátor znamená samotná hodnota, a ten sa odstráni vždy.

Odovzdajte tie isté operátory a sentinel, aké deklaroval filter — obe polovice tvoria jednu deklaráciu. Validuje sa každá položka hodnoty oddelenej čiarkami alebo poľa (multi-select ich posiela viac), najviac limits.max\_filter\_values.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/query-builder-for-laravel.md)
