Tabulka
SelectColumn
Inline select dropdown — ukládá okamžitě při změně.
Na této stránce
Inline select dropdown — ukládá okamžitě při změně.
use NyonCode\WireTable\Columns\SelectColumn;
Základní použití
SelectColumn::make('status') ->options([ 'draft' => 'Draft', 'review' => 'In Review', 'published' => 'Published', 'archived' => 'Archived', ])
Options z relace
SelectColumn::make('category_id') ->relationship('category', 'name') // načíst options ze souvisejícího modelu
Související seznam je pro každý řádek stejný, takže se načte jednou za render
a znovu použije — ne jednou za buňku. Explicitní ->options() má přednost.
// Naplnit seznam sám ze známého záznamu (zřídka potřeba).SelectColumn::make('category_id') ->relationship('category', 'name') ->loadRelationshipOptions($record)
Options z enumu
Předejte třídu PHP enumu pro rozvinutí jeho case na options value => label. Labely pocházejí z
getLabel(), když enum implementuje Foundation\Contracts\Enum\HasLabel, jinak se
z názvu case udělá headline. Kontrakty viz Enum a JSON casty.
SelectColumn::make('status')->options(OrderStatus::class)
Vždy nativní select
Editovatelná buňka vždy renderuje nativní <select> prohlížeče a žádný přepínač
->native() nenabízí. Je to jediná select plocha, která nesdílí combobox používaný ve
SelectFilter, TernaryFilter a Select
fieldu ve formulářích: buňka commituje přes wireEditableCell (bind přes x-model,
uložení při změně), ne přes entangled statePath, což je jediný binding, který sdílený
combobox umí.
Pokud potřebuješ vyhledávatelný dropdown, použij SelectFilter
pro filtrování, nebo Select field ve formuláři uvnitř edit akce
pro editaci.
Podmíněné disabled
SelectColumn::make('role') ->options(['admin' => 'Admin', 'editor' => 'Editor', 'viewer' => 'Viewer']) ->disabled(fn ($record) => $record->is_super_admin) // super admina nelze změnit
API SelectColumn
->options(array|string|Closure $options) // ['value' => 'Label', ...] nebo třída enumu->disabled(bool|Closure $disabled = true)->isDisabled(Model $record): bool->relationship(string $name, string $titleAttribute) // options z relace, načtené jednou za render->loadRelationshipOptions(Model $record) // naplnit seznam explicitně