Refresh Filament Relation Manager After an Action

biostate

Süleyman Özgür Özarpacı

Posted on June 5, 2023

Refresh Filament Relation Manager After an Action

In my FilamentPHP project, I have an action button that creates relationships for my resource. However, after the relationships are created, the relationship manager needs to be updated. In this article, we will solve this problem.

The Relationship Manager is a Livewire component. By emitting an event to that component, we can refresh it. You can find more information in the Livewire Documentation.

Let's take an example where we create an action that performs certain tasks and then refreshes the relation manager. First, create the action:

Actions\Action::make('example')
    ->action(function ($livewire) {
        // ... Your action code
        $livewire->emit('refreshExampleRelationManager');
    }),
Enter fullscreen mode Exit fullscreen mode

Next, listen to this event in your relation manager:


class ExampleRelationManager extends RelationManager
{
    ...
    protected $listeners = ['refreshExampleRelationManager' => '$refresh'];
    ...
}
Enter fullscreen mode Exit fullscreen mode

By following these steps, you can ensure that the relationship manager gets updated after the creation of relationships.

Edit: emit method changed to dispatch in Livewire v3.

💖 💪 🙅 🚩
biostate
Süleyman Özgür Özarpacı

Posted on June 5, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related