peltonsolutions / filament-enums
为Filament定制的包,用于处理Filament Admin中的枚举值。
1.1.0
2024-03-14 16:14 UTC
Requires
- php: ^8.2
- filament/filament: ^3.0.9
- peltonsolutions/laravel-enums: ^1.1
Requires (Dev)
- pestphp/pest: ^2.33
- pestphp/pest-plugin-livewire: ^2.1
README
filament-enums是peltonsolutions/laravel-enums包的扩展,专门为Laravel开发者设计。此包简化了在Filament应用程序中处理枚举值的工作,从而提高了代码的可读性和可维护性。
类似于laravel-enums包,filament-enums支持使用命名常量,提高了代码的组织和清晰度。它利用laravel-enums提供的功能,并辅以针对Filament定制的额外功能。
可选地,此包允许您通过NullableEnum
类扩展使Enum字段可为空。
安装
您可以通过以下命令使用composer安装此包
composer require peltonsolutions/filament-enums
示例
class ContentPageStatus extends \PeltonSolutions\LaravelEnums\Models\Enum { const DRAFT = 'draft'; const SCHEDULED = 'scheduled'; const PUBLISHED = 'published'; const ARCHIVED = 'archived'; public static function map(): array { return [ static::DRAFT => trans('content_page.statuses.draft'), static::SCHEDULED => trans('content_page.statuses.scheduled'), static::PUBLISHED => trans('content_page.statuses.published'), static::ARCHIVED => trans('content_page.statuses.archived'), ]; } }
class ContentPage extends Model { protected $casts = [ 'status' => ContentPageStatus::class ]; }
class ContentPageResource extends Resource { protected static ?string $model = ContentPage::class; public static function form(Form $form): Form { return $form ->schema([ \PeltonSolutions\FilamentEnums\Models\Forms\Components\EnumSelect::make('status') ->default(ContentPageStatus::DRAFT); } }
这将创建一个选择组件,它
- 从
map()
函数中获取选项 - 如果字段不是
\PeltonSolutions\LaravelEnums\Models\NullableEnum
,则要求字段为必填 - 要求选定的值匹配
map()
键之一
测试
为确保laravel-enums正常工作,您可以使用以下命令运行包的测试
注意:测试正在进行中。在编写需要将$record
传递到闭包中的测试时遇到困难。
composer test
安全
如果您发现任何安全相关的问题,请通过电子邮件security@peltonsolutions.com而不是使用问题跟踪器来报告。
鸣谢
许可证
filament-enums是开源软件。它遵循MIT许可证,这是一个允许软件被使用、修改和共享的宽松许可证。