tourze/easy-admin-enum-field-bundle
最新稳定版本:1.0.0
Composer 安装命令:
composer require 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
README 文档
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.
统计信息
- 总下载量: 2.08k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 40
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-31