hmayer/enum-field

A Laravel Nova field for PHP Enum classes.

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

This package is auto-updated.

Last update: 2025-07-05 20:14:48 UTC


README

Nova field for enum in PHP 8.1 and above.

I try to keep the same suleymanozev/enum-field interface, but with some additions to my personal needs.

Installation

You can install this package in a Laravel app that uses Nova via composer:

composer require hmayer/enum-field

Setup

use App\Enums\UserType;
use Illuminate\Database\Eloquent\Model;

class Example extends Model
{
    protected $casts = [
        'user_type' => UserType::class,
    ];
}

Usage

You can use the Enum field in your Nova resource like this:

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),

            // ...
        ];
    }
}

Filters

If you would like to use the provided Nova Select filter (which is compatible with both the Enum and FlaggedEnum fields), you can include it like this:

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

Alternatively, you may wish to use the provided Nova Boolean filter (which is also compatible with both the Enum and FlaggedEnum fields):

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

Credits

Thanks

License

The MIT License (MIT). Please see License File for more information.