Typy adries
type je enum s reťazcovými hodnotami, RoundlyConsulting\Addresses\Enums\AddressType. Stĺpec ukladá hodnotu enumu a model ju pri čítaní prevedie späť na enum:
| Prípad | Hodnota | label() |
|---|---|---|
AddressType::Default | default | Default |
AddressType::Billing | billing | Billing |
AddressType::Shipping | shipping | Shipping |
AddressType::Home | home | Home |
AddressType::Work | work | Work |
AddressType::Office | office | Office |
use RoundlyConsulting\Addresses\Enums\AddressType;
AddressType::Office->value; // 'office'
AddressType::Office->label(); // 'Office'
AddressType::cases(); // all six cases
AddressType::from('billing'); // AddressType::BillingTypy sú v celom verejnom API výhradne enumy — builder, AddressData, createAddress(), metódy na čítanie, scopy aj fasáda prijímajú AddressType. Obyčajný reťazec, napríklad 'office', je typová chyba, preto staršie volania s reťazcami prepíšte na zodpovedajúci prípad enumu.
Vstup z requestu
Validujte pravidlom enum z Laravelu, alebo nedôveryhodný reťazec preveďte sami a pri chybe vyhoďte typovanú výnimku balíka. Okrem nesprávne nastaveného default_type balík sám InvalidAddressTypeException nevyhadzuje — existuje práve pre takúto hranicu aplikácie:
use Illuminate\Validation\Rule;
use RoundlyConsulting\Addresses\Enums\AddressType;
use RoundlyConsulting\Addresses\Exceptions\InvalidAddressTypeException;
// validate with Laravel's enum rule…
$request->validate(['type' => ['required', Rule::enum(AddressType::class)]]);
$type = $request->enum('type', AddressType::class);
// …or convert an untrusted string yourself and fail with the package's typed exception
$type = AddressType::tryFrom($input)
?? throw InvalidAddressTypeException::for($input);Možnosti pre výber
label() vracia pevný anglický popisok — praktický pre výber typu vo formulári:
use RoundlyConsulting\Addresses\Enums\AddressType;
$options = collect(AddressType::cases())
->mapWithKeys(fn (AddressType $type) => [$type->value => $type->label()])
->all();
// ['default' => 'Default', 'billing' => 'Billing', 'shipping' => 'Shipping', …]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 kryptomienOdoslaní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.