FilamentF
Filament15mo ago
w5m

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.

public function table(Table $table): Table
{
  return $table
    ->columns([ 
      // ...
    ])
    ->filters([
      Filter::make('client_project')
        ->form([
          Select::make('client_id'),
          Select::make('project_id')
        ])
        ->query(function (Builder $query, array $data) {
          // ...
        }),
    ])
    ->headerActions([
      Tables\Actions\Action::make('next-project')
        ->url(function (\Livewire\Component $livewire): string {
          $filters = $livewire->getTable()->getFilters();
          dd($filters['client_project']);
          // how do I retrieve all of the options listed in the 'project_id' Select component?
        })
    ]);
}
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...
Tables\Actions\Action::make('next-project')
  ->action(function (\Livewire\Component $livewire): string {  
    $filters = $livewire->getTable()->getFilters();
    $filter = $filters['client_project'];
    dd($filter->getForm()->getComponent('project')->getOptions());
  })
Was this page helpful?