tourze / easy-admin-enum-field-bundle
A Symfony bundle that provides enhanced enum field support for EasyAdmin with automatic badge rendering and advanced display options
Installs: 196
Dependents: 22
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/tourze/easy-admin-enum-field-bundle
Requires
- easycorp/easyadmin-bundle: ^4
- symfony/config: ^7.3
- symfony/dependency-injection: ^7.3
- symfony/form: ^7.3
- symfony/framework-bundle: ^7.3
- symfony/http-kernel: ^7.3
- symfony/twig-bundle: ^7.3
- symfony/yaml: ^7.3
- tourze/bundle-dependency: 1.*
- tourze/enum-extra: 1.*
- tourze/symfony-dependency-service-loader: 1.*
Requires (Dev)
- doctrine/orm: ^3.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
- symfony/phpunit-bridge: ^7.3
- tourze/phpunit-base: 1.*
- tourze/phpunit-symfony-kernel-test: 1.*
- tourze/phpunit-symfony-unit-test: 1.*
This package is auto-updated.
Last update: 2025-11-01 19:15:29 UTC
README
A Symfony bundle that provides enhanced enum field support for EasyAdmin, with automatic badge rendering and advanced display options.
Features
- Enhanced enum field rendering with automatic badge support
- Seamless integration with PHP 8.1+ enums
- Automatic label generation from enum cases
- Customizable badge colors and styles
- Support for translatable enum labels
- Multiple choice selection capabilities
- Autocomplete widget support
- Native and expanded rendering modes
Installation
composer require tourze/easy-admin-enum-field-bundle
Dependencies
- PHP 8.1 or higher
- Symfony 6.4 or higher
- EasyAdmin Bundle 4.0 or higher
- tourze/enum-extra package
Quick Start
Basic Usage
<?php use Tourze\EasyAdminEnumFieldBundle\Field\EnumField; use App\Entity\StatusEnum; // In your EasyAdmin CrudController public function configureFields(string $pageName): iterable { yield EnumField::new('status') ->setEnumCases(StatusEnum::cases()) ->renderAsBadges(); }
Advanced Configuration
<?php use Tourze\EasyAdminEnumFieldBundle\Field\EnumField; // Custom badge mapping yield EnumField::new('priority') ->setEnumCases(PriorityEnum::cases()) ->renderAsBadges([ 'high' => 'danger', 'medium' => 'warning', 'low' => 'success' ]); // Multiple choice support yield EnumField::new('tags') ->setEnumCases(TagEnum::cases()) ->allowMultipleChoices() ->autocomplete();
Enum Interface Support
Your enums can implement the Labelable and BadgeInterface interfaces for enhanced functionality:
<?php use Tourze\EnumExtra\Labelable; use Tourze\EnumExtra\BadgeInterface; enum StatusEnum: string implements Labelable, BadgeInterface { case ACTIVE = 'active'; case INACTIVE = 'inactive'; case PENDING = 'pending'; public function getLabel(): string { return match ($this) { self::ACTIVE => 'Active', self::INACTIVE => 'Inactive', self::PENDING => 'Pending', }; } public function getBadge(): string { return match ($this) { self::ACTIVE => self::SUCCESS, self::INACTIVE => self::DANGER, self::PENDING => self::WARNING, }; } }
Configuration Options
Badge Types
Available badge types: success, warning, danger, info, primary, secondary, light, dark
Widget Types
native: Use native HTML select widgetautocomplete: Use autocomplete widget with search functionality
Display Options
renderExpanded(): Render as radio buttons or checkboxesescapeHtml(): Control HTML escaping in field valuesallowMultipleChoices(): Enable multiple selection
Advanced Usage
Custom Field Configurator
You can create custom field configurators to apply consistent enum field settings:
<?php use Tourze\EasyAdminEnumFieldBundle\Field\EnumField; class StatusFieldConfigurator { public static function create(string $propertyName): EnumField { return EnumField::new($propertyName) ->setEnumCases(StatusEnum::cases()) ->renderAsBadges([ 'active' => 'success', 'inactive' => 'danger', 'pending' => 'warning' ]) ->escapeHtml(false); } }
Dynamic Badge Configuration
Use callable for dynamic badge assignment:
yield EnumField::new('status') ->setEnumCases(StatusEnum::cases()) ->renderAsBadges(function(FieldDto $field) { $value = $field->getValue(); return match ($value) { StatusEnum::CRITICAL => 'danger', StatusEnum::HIGH => 'warning', default => 'info' }; });
Contributing
Please see CONTRIBUTING.md for details.
License
The MIT License (MIT). Please see License File for more information.