Membuat Enum label

namespace App\Enums;

use Filament\Support\Contracts\HasColor; use Filament\Support\Contracts\HasIcon; use Filament\Support\Contracts\HasLabel;

enum PaymentStatus: string implements HasLabel, HasColor, HasIcon { case Paid = 'PAID'; case Unpaid = 'UNPAID'; case Expired = 'EXPIRED'; case Failed = 'FAILED';

public function getLabel(): ?string
{
return match($this)
{
self::Paid => 'PAID',
self::Unpaid => 'UNPAID',
self::Expired => 'EXPIRED',
self::Failed => 'FAILED',
};
}
 
public function getColor(): string | array | null
{
return match($this)
{
self::Paid => 'success',
self::Unpaid => 'danger',
self::Expired => 'primary',
self::Failed => 'info',
};
}
 
public function getIcon(): ?string
{
return match ($this) {
self::Paid => 'heroicon-m-check',
self::Unpaid => 'heroicon-m-x-mark',
self::Expired => 'heroicon-m-clock',
self::Failed => 'heroicon-m-x-face-frown',
};
}

}penulisan value case harus sesuai pada tipe data enum yang sudah di deklarasikan pada database baik huruf kecil mau pun besarpada model tambahkan script berikut:protected $casts = [ 'status' => PaymentStatus::class ];Implementasi pada formuse Filament\Forms\Components\Select; use App\Enums\PaymentStatus;

Select::make('status') ->native(false) ->options(PaymentStatus::class)Implementasi pada tableuse Filament\Tables\Columns\TextColumn;

TextColumn::make(PaymentStatus::class) ->badge()

Komentar

Ada 0 komentar pada episode ini.