datomatic / nova-enum-field
一个 Laravel Nova PHP 8.1 枚举字段,带有过滤器
v1.9.0
2024-04-03 12:59 UTC
Requires
- php: >=8.1
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/http: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- laravel/nova: ^3.0|^4.0
README
Laravel Nova 枚举字段
Nova 字段,用于 PHP 8.1 及以上版本的枚举(包括纯 Enum
和 BackedEnum
),与 datomatic/enum-helper 和 datomatic/laravel-enum-helper 兼容。
还包括 Nova Select 过滤器和 Nova 布尔过滤器:
安装
您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包
composer require datomatic/nova-enum-field
设置
use App\Enums\UserType; use Illuminate\Database\Eloquent\Model; class Example extends Model { protected $casts = [ 'user_type' => UserType::class, ]; }
用法
您可以在 Nova 资源中使用 Enum
字段,如下所示
namespace App\Nova; use App\Enums\UserType; use Datomatic\Nova\Fields\Enum\Enum; class Example extends Resource { // ... public function fields(Request $request) { return [ // ... Enum::make('User Type','user_type')->attach(UserType::class), // ... ]; } }
请注意,字段上方法调用的顺序可能很重要。例如,必须在调用 attach()
之前调用 nullable()
,并且必须在调用 attach()
之后调用 options()
。
如果您使用 datomatic/laravel-enum-helper,您可以设置自定义动态属性或/和案例子集。
默认属性是 description
。
Enum::make('User Type','user_type') ->nullable() ->property('excerpt') ->cases([UserType::ADMINISTRATOR,UserType::MODERATOR]) ->attach(UserType::class),
过滤器
如果您想使用提供的 Nova Select 过滤器,可以像这样包含它
namespace App\Nova; use App\Enums\UserPermissions; use App\Enums\UserType; use Datomatic\Nova\Fields\Enum\EnumFilter; class Example extends Resource { // ... public function filters(Request $request) { return [ EnumFilter::make('user_type', UserType::class), // With optional name and default value: EnumFilter::make('user_type', UserType::class) ->name(__('User Type')) ->default(UserType::ADMINISTRATOR) ]; } }
或者,您可能希望使用提供的 Nova 布尔过滤器
namespace App\Nova; use App\Enums\UserPermissions; use App\Enums\UserType; use Datomatic\Nova\Fields\Enum\EnumBooleanFilter; class Example extends Resource { // ... public function filters(Request $request) { return [ EnumBooleanFilter::make('user_type', UserType::class), // With optional name and default value: EnumBooleanFilter::make('user_type', UserType::class) ->name(__('User Type')) ->default([UserType::ADMINISTRATOR, UserType::MODERATOR]) ]; } }
如果您使用 datomatic/laravel-enum-helper,您可以设置自定义动态属性或/和案例子集。
默认属性是 description
。
// Enum filter EnumFilter::make('user_type', UserType::class) ->name('User Type') ->property('excerpt') ->cases([UserType::ADMINISTRATOR,UserType::MODERATOR]) // Boolean Enum filter EnumBooleanFilter::make('user_type', UserType::class) ->name('User Type') ->property('excerpt') ->cases([UserType::ADMINISTRATOR,UserType::MODERATOR])
鸣谢
感谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。