tourze/easy-admin-enum-field-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

English | 中文

PHP Version Latest Version License Build Status Code Coverage

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 widget
  • autocomplete: Use autocomplete widget with search functionality

Display Options

  • renderExpanded(): Render as radio buttons or checkboxes
  • escapeHtml(): Control HTML escaping in field values
  • allowMultipleChoices(): 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

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-31