Filament relation manager is a great feature for showing data from an Eloquent relationship. But what if you want to show the relation manager only on the View page but not Edit?
Imagine a scenario: we have Items resource and want to show Transactions only on the view page.

I will show you two options.
Option 1: Remove Managers from Edit Page
When you register Relation Managers in the Resource, they are shown in the Edit and View pages.
class ItemResource extends Resource{    // ..     public static function getRelations(): array    {        return [            ItemResource\RelationManagers\TransactionsRelationManager::class,        ];    }     // ...}
You can remove Relation Managers from the Edit page by returning an empty array using the getRelationManagers() method on the Edit page class.
class EditItem extends EditRecord{    // ...     public function getRelationManagers(): array    {        return [];    }}
Option 2: Add on the Page and not Resource
Another way to show the Relation Manager only on the View page is to register it on the page class instead of a Resource. The manager can be registered on the Edit or List pages class to show the Relation Manager only on the View page.
On the view class:
use App\Filament\Resources\ItemResource\RelationManagers\TransactionsRelationManager; class ViewItem extends ViewRecord{    protected static string $resource = ItemResource::class;     public function getRelationManagers(): array    {        return [            TransactionsRelationManager::class,        ];    }     // ...}
Or on the list class:
use App\Filament\Resources\ItemResource\RelationManagers\TransactionsRelationManager; class ListItems extends ListRecords{    // ...     public function getRelationManagers(): array    {        return [            TransactionsRelationManager::class,        ];    }}
If you want more Filament examples, you can find more real-life projects on our FilamentExamples.com.
                                                    
                                                    
                                                    
No comments or questions yet...