How to get all options from table filter in table header action?
I've created a custom filter form for a table on a relation page (i.e. a class which extends
ManageRelatedRecords
). I have a Select
component as part of the filter form and this is populated with a list of projects.
Within a table header action, I'd like to retrieve the list of projects (i.e. Select
options), in order to provide navigation to one of the projects in the list. Unfortunately, I'm struggling to access the Select
component, so would be grateful to be pointed in the right direction.
Solution:Jump to solution
I've finally managed to get hold of the list of Select options. I had to modify the creation of the
$filters = $livewire->getTable()->getFilters();...
project_id
Select component slightly by adding ->key('project')
. Then, in the header action, the following code gave me an array of the options...
```php
Tables\Actions\Action::make('next-project')
->action(function (\Livewire\Component $livewire): string {$filters = $livewire->getTable()->getFilters();...
5 Replies
What are you trying to achieve?
The above should give you the filter values.
I'm trying to get the full list of options from the
project_id
Select component (not the currently selected option, which ->getState()
returns), so that I can decide which id from the list should be used to build a URL to navigate to. I'm guessing I need to use the ->getOptions()
method, but I'm not sure how I get access to the Select
component.
I was trying to avoid executing another database query, as the list of relevant project id's already exists in the Select
component's list of options.Hmm why not save the options in a variable?
I guess it gets more complicated if you have a dynamic select 🤔 But there should be ways to avoid running it again
Unfortunately, the
client_id
and project_id
components are dependent Selects, so the latter is dynamically populated based on the former...
Solution
I've finally managed to get hold of the list of Select options. I had to modify the creation of the
project_id
Select component slightly by adding ->key('project')
. Then, in the header action, the following code gave me an array of the options...