F
Filament16mo ago
namrata

Options Format

I want to format the way my options are shown , I used getOptionLabelFromRecordUsing() but it is only working in single select but it doesnot work with multiple(). What can I use in multiple select to format my options label ?
7 Replies
LeandroFerreira
LeandroFerreira16mo ago
->getOptionLabelsUsing ?
namrata
namrataOP16mo ago
Nope did not work.
Forms\Components\Select::make('products')
->options(Product::where('active', true)->publicDisplay()->pluck('sku', 'id'))
->getOptionLabelUsing(fn (Model $record) => "{$record->name} | {$record->sku}")
->multiple()
->reactive()
->required()
->afterStateUpdated(function ($livewire, $state) {
$livewire->dispatch('productAdded', $state);
}),
Forms\Components\Select::make('products')
->options(Product::where('active', true)->publicDisplay()->pluck('sku', 'id'))
->getOptionLabelUsing(fn (Model $record) => "{$record->name} | {$record->sku}")
->multiple()
->reactive()
->required()
->afterStateUpdated(function ($livewire, $state) {
$livewire->dispatch('productAdded', $state);
}),
namrata
namrataOP16mo ago
This is my code and this is the respone
No description
Kenneth Sese
Kenneth Sese16mo ago
Is there a reason you can't use ->relationship()? getOptionLabelFromRecordUsing() is working with me with relationship() relationship also has a query parameter so you can use your scope.
namrata
namrataOP16mo ago
The field is json saved llike this [1407,14283,6594,1007] so I cannot use relationship in this
Kenneth Sese
Kenneth Sese16mo ago
@namrata_1999 Try this:
Forms\Components\Select::make('products')
->options(Product::where('active', true)
->publicDisplay()
->get()
->mapWithKeys(fn ($product) =>
[$product->id => "{$product->name} | {$product->sku}"]
)
->toArray()
)
->getOptionLabelsUsing(fn (array $values): array =>
Product::whereIn('id', $values)
->get()
->mapWithKeys(fn ($product) =>
[$product->id => "{$product->name} | {$product->sku}"]
)
->toArray()
)
->multiple()
->reactive()
->required()
->afterStateUpdated(function ($livewire, $state) {
$livewire->dispatch('productAdded', $state);
}),
Forms\Components\Select::make('products')
->options(Product::where('active', true)
->publicDisplay()
->get()
->mapWithKeys(fn ($product) =>
[$product->id => "{$product->name} | {$product->sku}"]
)
->toArray()
)
->getOptionLabelsUsing(fn (array $values): array =>
Product::whereIn('id', $values)
->get()
->mapWithKeys(fn ($product) =>
[$product->id => "{$product->name} | {$product->sku}"]
)
->toArray()
)
->multiple()
->reactive()
->required()
->afterStateUpdated(function ($livewire, $state) {
$livewire->dispatch('productAdded', $state);
}),
namrata
namrataOP15mo ago
Thank you but this is messes up the search results. It formatted the options but the results of serach are not matching my search parameter
Want results from more Discord servers?
Add your server