zvizvi/relation-manager-repeater
RelationManager pattern, making it a natural fit for Laravel applications using Filament for admin panels. It aligns with Filament’s modular architecture, allowing seamless integration without disrupting core functionality.Post → Comments), reducing the need for separate CRUD pages. This is particularly valuable for hierarchical or multi-step workflows (e.g., e-commerce products with variants, surveys with questions).RelationManagerRepeaterAction), minimizing direct model/database changes. Existing RelationManager implementations require minimal modifications (e.g., adding the action to headerActions).with() or query scopes.Order → Items vs. User → Addresses. Complex nested relations may need additional tooling (e.g., nested repeaters).RelationManager but lacking a dedicated "repeater" or bulk-edit interface.RelationManager classes to identify candidates for repeater integration (e.g., Post → Comments, Product → Variants).composer require zvizvi/relation-manager-repeater
2.x; for Filament 3, use 1.x.RelationManagerRepeaterAction to the headerActions of target RelationManager classes:
public function table(Table $table): Table
{
return $table
->headerActions([
RelationManagerRepeaterAction::make(),
]);
}
make() options).BlogPost → Tags) to test performance and UX.RelationManager queries.debug() methods and Laravel’s query log.pause()/resume() for bulk updates.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Database deadlocks (bulk edits) | User errors, lost edits | Optimistic locking, retry logic |
| N+1 queries | Slow repeater load times | Eager load related data in RelationManager |
| CSRF validation failures | Repeater actions blocked | Ensure Filament’s CSRF middleware is configured |
| Plugin conflicts (e.g., Forms) | UI rendering issues | Test with other plugins; isolate CSS/JS |
| Unhandled exceptions in repeater | Silent failures or partial updates | Implement global exception handlers |
RelationManager customization.How can I help you explore Laravel packages today?