laravel-easy-enum maintained by sakanjo
✨ Help support the maintenance of this package by sponsoring me.
Designed to work with Laravel, Filament, and more.

Table of Contents
📦 Install
composer require sakanjo/laravel-easy-enum
🦄 Usage
1. Create enum
<?php
namespace App\Enums;
use SaKanjo\EasyEnum;
enum ExampleEnum: int
{
use EasyEnum;
case Active = 0;
case NOPE = 1;
}
2. Create lang file
// lang/en/enums.php
<?php
use App\Enums;
return [
Enums\ExampleEnum::class => [
Enums\ExampleEnum::NOPE->name => 'Nope',
// ...
],
// ...
];
That's it!
📚 Methods
getLabel
Returns the label of the enum value.
Status::Active->getLabel(); // Active
translated
Returns the translated label of the enum value.
Status::Active->translated('tr'); // Aktif
is
Checks if the enum is equal to another one.
$enum1->is($enum2); // boolean
isNot
inverse of is.
$enum1->isNot($enum2); // boolean
in
Checks if the enum is in a list of enums.
$enum->in([$enum1, $enum2]); // boolean
notIn
inverse of in.
$enum->notIn([$enum1, $enum2]); // boolean
tryFromName
Safely converts a string to its corresponding enum value (returns null if not found).
Status::tryFromName('Active'); // Status::Active
Status::tryFromName('Oops'); // null
Converts a string to its corresponding enum value (throws exception if not found).
fromName
Status::fromName('Active'); // Status::Active
Status::fromName('Oops'); // Throws ValueError exception
names
Returns a list of case names.
Status::names(); // ['Active', 'NOPE']
values
Returns a list of case values .
Status::values(); // [0, 1]
options
Returns an associative array of case names and values.
Status::options(); // ['Active' => 0, 'NOPE' => 1]
Status::options(true); // ['Active' => 0, 'Nope' => 1]
toHtml
alias for getLabel, useful in blade.
Status::Active->toHtml(); // Active
resolveDisplayableValue
same as toHtml except it doesn't render HTML.
Status::Active->resolveDisplayableValue(); // Active
🔥 Practical examples
Filamentphp
Enum
<?php
namespace App\Enums;
use Filament\Support\Contracts\HasLabel;
use SaKanjo\EasyEnum;
enum Status: int implements HasLabel
{
use EasyEnum;
case Active = 0;
case Disabled = 1;
}
Resource
<?php
use Filament\Forms;
use App\Enums;
Forms\Components\Select::make('status')
->options(Enums\Status::class);
Laravel blade
<?php
namespace App\Enums;
use Illuminate\Contracts\Support\DeferringDisplayableValue;
use Illuminate\Contracts\Support\Htmlable;
use SaKanjo\EasyEnum;
enum Status: int implements Htmlable // or DeferringDisplayableValue
{
use EasyEnum;
case Active = 0;
case Disabled = 1;
}
<div>
Current status: {{ auth()->user()->status }}
</div>
💖 Support the development
Do you like this project? Support it by donating
Click the "💖 Sponsor" at the top of this repo.
©️ Credits
📄 License
MIT License © 2023-PRESENT Salah Kanjo