hmayer/enum-field

Laravel Nova 字段,用于 PHP 枚举类。

v1.0.1 2023-05-05 14:49 UTC

This package is auto-updated.

Last update: 2024-09-05 17:57:51 UTC


README

PHP 8.1 及以上版本中枚举字段的 Nova 字段。

我试图保持与 suleymanozev/enum-field 相同的接口,但增加了一些满足个人需求的功能。

安装

您可以通过 composer 在使用 Nova 的 Laravel 应用中安装此包

composer require hmayer/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 Hmayer\EnumField\Enum;

class Example extends Resource
{
    // ...

    public function fields(Request $request)
    {
        return [
            // ...

            Enum::make('User Type')->attach(UserType::class),

            // ...
        ];
    }
}

过滤器

如果您想使用提供的 Nova Select 过滤器(与 EnumFlaggedEnum 字段兼容),可以这样包含它

namespace App\Nova;

use App\Enums\UserPermissions;
use App\Enums\UserType;
use Hmayer\EnumField\EnumFilter;

class Example extends Resource
{
    // ...

    public function filters(Request $request)
    {
        return [
            EnumFilter::make(__('User Type'), 'user_type', UserType::class),
                
             // With optional default value:
            EnumFilter::make(__('User Type'), 'user_type', UserType::class, UserType::Administrator),
        ];
    }
}

或者,您可能希望使用提供的 Nova 布尔过滤器(也与 EnumFlaggedEnum 字段兼容)

namespace App\Nova;

use App\Enums\UserPermissions;
use App\Enums\UserType;
use Hmayer\EnumField\EnumBooleanFilter;

class Example extends Resource
{
    // ...

    public function filters(Request $request)
    {
        return [
            EnumBooleanFilter::make(__('User Type'), 'user_type', UserType::class),
                
            // With optional default values:
            EnumBooleanFilter::make(__('User Type'), 'user_type', UserType::class, [
                UserType::Administrator,
                UserType::Moderator,
            ]),
        ];
    }
}

致谢

感谢

许可

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