peltonsolutions/filament-enums

为Filament定制的包,用于处理Filament Admin中的枚举值。

1.1.0 2024-03-14 16:14 UTC

This package is auto-updated.

Last update: 2024-09-14 17:21:32 UTC


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);
	}
}

这将创建一个选择组件,它

  1. map()函数中获取选项
  2. 如果字段不是\PeltonSolutions\LaravelEnums\Models\NullableEnum,则要求字段为必填
  3. 要求选定的值匹配map()键之一

测试

为确保laravel-enums正常工作,您可以使用以下命令运行包的测试

注意:测试正在进行中。在编写需要将$record传递到闭包中的测试时遇到困难。

composer test

安全

如果您发现任何安全相关的问题,请通过电子邮件security@peltonsolutions.com而不是使用问题跟踪器来报告。

鸣谢

许可证

filament-enums是开源软件。它遵循MIT许可证,这是一个允许软件被使用、修改和共享的宽松许可证。