Tabulka
SelectFilter
Rozbalovací seznam nad předdefinovanými možnostmi — filtr, po kterém většina tabulek sáhne první.
Na této stránce
Rozbalovací filtr pro předdefinované možnosti. Nejběžnější typ filtru.
Vykresluje se přes stejný combobox jako Select field ve formulářích, takže
otevřený filtr vypadá stejně jako otevřený formulářový select. Nativní <select>
prohlížeče je opt-in přes ->native().
use NyonCode\WireTable\Filters\SelectFilter;
Základní použití
SelectFilter::make('status') ->options([ 'active' => 'Active', 'inactive' => 'Inactive', 'banned' => 'Banned', ])
S placeholderem
První položka je vždy prázdná možnost „All“. Pro přizpůsobení:
SelectFilter::make('role') ->options([ '' => 'All Roles', // explicitní placeholder 'admin' => 'Admin', 'editor' => 'Editor', 'viewer' => 'Viewer', ])
Vícenásobný výběr
SelectFilter::make('tags') ->options(Tag::pluck('name', 'id')->toArray()) ->multiple() ->label('Tags')
Při multiple() aplikuje whereIn() místo where().
Vyhledávatelný rozbalovací seznam
SelectFilter::make('country') ->options(Country::pluck('name', 'code')->toArray()) ->searchable() ->label('Country')
Přidá do rozbalovacího seznamu vyhledávací input. Povrch je stejný combobox jako u nevyhledávatelného filtru — jen navíc s vyhledávacím inputem.
Nativní HTML select
SelectFilter::make('type') ->options([...]) ->native() // nativní <select> element prohlížeče (rychlejší render)
Odhlásí filtr ze sdíleného comboboxu, takže přestane odpovídat formulářovému selectu. Používejte jen tam, kde je cena renderu důležitější než jednotný vzhled.
Z databáze
SelectFilter::make('department') ->options(fn () => Department::orderBy('name')->pluck('name', 'id')->toArray())
Možnosti mohou být closure — vyhodnocují se líně při renderu.
Z enumu
Předejte třídu PHP enumu místo pole — jeho case se rozvinou na možnosti value => label.
Popisky pocházejí z getLabel(), když enum implementuje Foundation\Contracts\Enum\HasLabel,
jinak se z názvu case udělá headline.
SelectFilter::make('status')->options(OrderStatus::class)
Když je atribut modelu přetypován na enum,
SelectFilterna tom sloupci automaticky naplní své možnosti z enumu i bez volání->options(). Tato zkratka je pro případy, kdy filtr nastavujete explicitně.
Vlastní dotaz
SelectFilter::make('has_avatar') ->options([ 'yes' => 'With Avatar', 'no' => 'Without Avatar', ]) ->query(fn (Builder $query, string $value) => match($value) { 'yes' => $query->whereNotNull('avatar_url'), 'no' => $query->whereNull('avatar_url'), })
API SelectFilter
->options(array|string|Closure $options) // ['value' => 'Label', ...] nebo třída enumu->multiple(bool $multiple = true) // režim multi-select->searchable(bool $searchable = true) // přidá vyhledávací input do rozbalovacího seznamu->native(bool $native = true) // opt-in nativní <select> prohlížeče (výchozí: false)