erikaraujo/filament-enum-attributes

为枚举提供特性,以便在 Filament 枚举中使用属性而非 get 方法

1.0.0 2024-01-30 23:57 UTC

This package is auto-updated.

Last update: 2024-09-13 19:59:49 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

允许在 Filament 枚举中使用属性的枚举特性。

安装

您可以通过 composer 安装此包

composer require erikaraujo/filament-enum-attributes

用法

首先,您需要在 Filament 枚举类中导入并使用 Enum 特性

use HasColorAttribute;
use HasIconAttribute;
use HasLabelAttribute;
use HasDescriptionAttribute;

或者,您也可以通过以下方式导入所有特性

use HasFilamentEnumAttributes;

现在,您不再需要按照文档中的说明编写默认的 filament get 方法(getColor()getIcon()getLabel()),您可以直接在枚举情况中使用 #[Color]#[Icon]#[Label] 属性。

请参阅以下示例

enum Suit: string implements HasColor, HasIcon, HasLabel, HasDescription
{
    use HasColorAttribute;
    use HasIconAttribute;
    use HasLabelAttribute;
    use HasDescriptionAttribute;

    #[Color(['gray', 'warning'])]
    case Clubs = 'clubs';

    #[
        Color('warning'),
        Label('Shine bright'),
    ]
    case Diamonds = 'diamonds';

    #[Color('gray')]
    #[Label('Club')]
    #[Icon('heroicon-o-heart')]
    case Hearts = 'hearts';

    #[Description('The upside down black heart.')]
    case Spades = 'spades';

确保已导入所有内容

use ErikAraujo\FilamentEnumAttributes\Attributes\Color;
use ErikAraujo\FilamentEnumAttributes\Attributes\Icon;
use ErikAraujo\FilamentEnumAttributes\Attributes\Label;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasColorAttribute;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasIconAttribute;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasLabelAttribute;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasDescriptionAttribute;

如果您想使用 laravel 辅助函数进行字符串翻译,您还可以向 LabelDescription 属性传递一个布尔型的 translate 参数。因此,以下

#[Description('descriptions.suits.spades')]

将被评估为 __('descriptions.suits.spades')

测试

要执行测试,只需运行 composer 脚本

composer test

如果您想检查覆盖率,请运行

composer test:coverage:html

贡献

请参阅 CONTRIBUTING 以获取详细信息。

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件