Štruktúrované adresy
Contact je Addressable, takže cez addresses-for-laravel drží adresár fakturačných, fyzických či korešpondenčných adries. Voľný reťazec value naďalej slúži ako záloha:
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
use RoundlyConsulting\Addresses\Enums\AddressType;
$contact->addAddress(AddressData::make(
city: 'Bratislava', street: 'Hlavna 1', postalCode: '81101',
countryIso: 'SK', type: AddressType::Billing, isPrimary: true,
));
$contact->primaryAddress(); // the primary Address
$contact->addressesOfType(AddressType::Billing); // typed lookup
$contact->formattedAddress(); // one-line render, falls back to value- addresses(), addAddress(AddressData), primaryAddress(?AddressType), addressesOfType(AddressType), setPrimaryAddress(Address) — z traitu HasAddresses balíka addresses.
- formattedAddress() — jednoriadkové zobrazenie primárnej adresy alebo value kontaktu, ak žiadna nie je pripojená.
- Prípady AddressType: Default, Billing, Shipping, Home, Work, Office.
Kontakt a adresa naraz
// Build an address-type contact and its structured Address in one call:
Contacts::for($owner)
->structuredAddress([
'city' => 'Vienna', 'street' => 'Ring 3',
'postalCode' => '1010', 'countryIso' => 'AT',
'type' => AddressType::Billing,
])
->add();
// Or from the owner directly:
$owner->addStructuredAddress(AddressData::make(
city: 'Bratislava', street: 'Hlavna 1', postalCode: '81101', countryIso: 'SK',
), label: 'Main');structuredAddress() prijíma AddressData alebo pole (city, street, postalCode alebo postal_code, countryIso alebo country_iso, name, type, isPrimary, meta). Chýbajúci alebo nerozpoznaný type ponechá na addresses.default_type vašej aplikácie, presne ako pri adrese vytvorenej cez balík addresses. Pri add() value kontaktu zrkadlí jednoriadkové zobrazenie adresy, aby existujúce čítania fungovali ďalej.
Štruktúrovaná adresa sa pripojí ako primárna Address kontaktu bez ohľadu na jej príznak isPrimary, takže ju primaryAddress() nájde a formattedAddress() ju zobrazí — vrátane neskorších úprav Address.
Úprava adresy
Contacts::update() prijme štruktúrovanú adresu v ContactData::$address rovnako ako add(): prepíše vlastnú Address kontaktu na mieste, v tej istej transakcii ako riadok, a value zrkadlí jej nové jednoriadkové zobrazenie — formattedAddress() teda zobrazí novú adresu. Kontakt bez nej ju dostane pripojenú; ostatné adresy kontaktu zostanú nedotknuté. Úprava len hodnoty štruktúrovanú adresu zachová a zmení iba text, preto ak chcete zmeniť, čo zobrazuje formattedAddress(), odovzdajte aj adresu alebo upravte samotnú Address.
Štruktúrovanú adresu prijme len adresný kontakt — pri akomkoľvek inom sa vyhodí InvalidContactValue. Kódy krajín validuje balík addresses — neznáma krajina vyhodí jeho InvalidCountryException. Soft delete kontaktu presunie do koša aj jeho adresy, restore() ich vráti a forceDelete() ich odstráni natrvalo.
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.