datomatic/nova-enum-field

一个 Laravel Nova PHP 8.1 枚举字段,带有过滤器

v1.9.0 2024-04-03 12:59 UTC

README

Latest Version on Packagist GitHub Code Style Action Status Total Downloads

Laravel Nova 枚举字段

Nova 字段,用于 PHP 8.1 及以上版本的枚举(包括纯 EnumBackedEnum),与 datomatic/enum-helperdatomatic/laravel-enum-helper 兼容。

Select field on form

还包括 Nova Select 过滤器和 Nova 布尔过滤器:Select filter Boolean filter

安装

您可以通过 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)。有关更多信息,请参阅许可证文件