NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Enums for Laravel

Farby štítkov a prezentácia

K dispozícii od verzie 1.1.0. Pre badge a stavové štítky môže enum priradiť každému prípadu farbu implementovaním RoundlyConsulting\Enums\Contracts\HasColor. presentation() potom vráti jeden prípad ako DTO EnumPresentation a presentations() všetky prípady v poradí deklarácie:

use RoundlyConsulting\Enums\Attributes\TranslatedLabels;
use RoundlyConsulting\Enums\Contracts\HasColor;
use RoundlyConsulting\Enums\Helpers;

#[TranslatedLabels]
enum OrderStatus: string implements HasColor
{
    use Helpers;

    case Pending = 'pending';
    case Shipped = 'shipped';

    public function color(): string
    {
        return match ($this) {
            self::Pending => 'warning',
            self::Shipped => 'success',
        };
    }
}

OrderStatus::Shipped->presentation();     // EnumPresentation {value: 'shipped', label: 'Na ceste', color: 'success'}
OrderStatus::presentations();             // Collection<int, EnumPresentation>, every case in declaration order
OrderStatus::presentations()->toJson();   // [{"value":"pending","label":"…","color":"warning"}, …]
  • Farba je ľubovoľný reťazec, ktorému rozumie váš frontend — variant badge, CSS trieda či hex kód. Balík ju len odovzdá ďalej a nikdy ju neinterpretuje.
  • HasColor je rozhranie, nie metóda traitu, takže enum, ktorý už má metódu color() s iným návratovým typom, funguje ďalej: v prezentáciách má color: null, kým rozhranie neimplementuje.
  • presentation() použije hodnotu backed enumu (pri čistom enume názov prípadu) v natívnom type, takže int zostane intom, a pre popis readable(), takže platia preložené popisy aj prepísané readable(). presentations() zavolá presentation() pre každý prípad.
  • Bez HasColor je color null.
  • options() si pre selecty zachová tvar {value, label, name}; keď potrebujete farbu, použite presentations().

DTO EnumPresentation

ČlenTypHodnota
valuestring|intHodnota backed enumu v natívnom type — pri čistom enume názov prípadu.
labelstringreadable() — preložený popis.
color?stringcolor() pri HasColor, inak null.
toArray()array['value' => ..., 'label' => ..., 'color' => ...]
jsonSerialize()arrayTo isté ako toArray().

RoundlyConsulting\Enums\DataTransferObjects\EnumPresentation je final readonly trieda, ktorá implementuje Arrayable a JsonSerializable: toArray() aj json_encode() vždy vrátia presne value, label a color v tomto poradí, takže presentations() môžete odovzdať priamo do JSON odpovede alebo ako prop pre Inertia.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.