chaim-chv / filament-enum-plural-label
Plural label contract for PHP enums used with Laravel and Filament
Package info
github.com/chaim-chv/filament-enum-plural-label
pkg:composer/chaim-chv/filament-enum-plural-label
Requires
- php: ^8.2
- illuminate/contracts: ^11.28|^12.0|^13.0
Requires (Dev)
- phpunit/phpunit: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
A small Laravel + Filament helper library that allows PHP enums to expose a plural label for use in Filament resources, navigation, and tables.
This package provides a single contract. It does not register hooks, override Filament behavior, or add magic.
Compatibility
- PHP 8.2+
- Laravel 11.28+, 12, or 13
- Filament v5+
Older versions of the package remain available for Filament v3/v4.
Installation
composer require chaim-chv/filament-enum-plural-label
Usage
Define an enum that implements the contract:
use FilamentEnumPluralLabel\Contracts\HasPluralLabel; enum UserRole: string implements HasPluralLabel { case Admin = 'admin'; case Editor = 'editor'; case Viewer = 'viewer'; public function getPluralLabel(): string { return match ($this) { self::Admin => 'Administrators', self::Editor => 'Editors', self::Viewer => 'Viewers', }; } }
The getPluralLabel() method may return a string, an
Illuminate\Contracts\Support\Htmlable instance, or null.
Filament example
use FilamentEnumPluralLabel\Contracts\HasPluralLabel; public static function getPluralModelLabel(): string { $role = UserRole::tryFrom(request('role')); if ($role instanceof HasPluralLabel) { return $role->getPluralLabel(); } return 'Users'; }
Testing
composer test
@chaim-chv © 2026