Tabulka
SelectColumn
Inline rozbalovací seznam, který uloží v okamžiku změny, s možnostmi a zápisovou cestou za ním.
Na této stránce
Inline rozbalovací seznam — 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', ])
Možnosti 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)
Možnosti z enumu
Předejte třídu PHP enumu pro rozvinutí jeho case 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. 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řebujete vyhledávatelný rozbalovací seznam, použijte 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 = null) // options z relace, načtené jednou za render->loadRelationshipOptions(Model $record) // naplnit seznam explicitně