AddressData a CreateAddressAction
Injektovanie manažéra a úplnú mapu fasáda → akcia nájdete v sekcii DI a akcie. Pri importoch, seederoch a službách zostavte AddressData a odovzdajte ho adresáru — alebo metóde addAddress() z traitu:
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
use RoundlyConsulting\Addresses\Enums\AddressType;
$payer->addAddress(AddressData::make(
city: 'Bratislava',
street: 'Somewhere 1',
postalCode: '81101',
countryIso: 'SK',
type: AddressType::Office,
isPrimary: true,
));AddressData
AddressData je finálny readonly value object. Používajte factory make() s pomenovanými argumentmi:
| Vlastnosť | Typ | Predvolené |
|---|---|---|
city | string | — |
street | string | — |
postalCode | string | — |
countryIso | string | — |
name | ?string | null |
type | ?AddressType | null → config default_type |
isPrimary | bool | false |
meta | ?Collection | null |
use Illuminate\Support\Collection;
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
use RoundlyConsulting\Addresses\Enums\AddressType;
$data = AddressData::make(
city: ' Bratislava ', // trimmed to 'Bratislava'
street: 'Somewhere 1',
postalCode: '81101',
countryIso: ' sk ', // normalised to 'SK'
name: 'HQ',
type: AddressType::Billing,
isPrimary: true,
meta: Collection::make(['floor' => 3]),
);
$data->toAttributes();
// ['type' => 'billing', 'is_primary' => true, 'name' => 'HQ', 'city' => 'Bratislava',
// 'street' => 'Somewhere 1', 'postal_code' => '81101', 'country_iso' => 'SK', 'meta' => Collection]make() oreže mesto, ulicu, PSČ a názov (prázdny názov sa zmení na null) a pri zapnutom normalise_country normalizuje krajinu. Priamy new AddressData(...) oboje preskočí — používajte make(), pokiaľ hodnoty nie sú už vyčistené. Ak typ vynecháte v make() aj v konštruktore, použije sa nakonfigurovaný default_type. meta prijíma Collection alebo null; metóda meta() v builderi prijme akýkoľvek iterable a zabalí ho za vás.
createAddress()
Skratka traitu s pomenovanými argumentmi zostaví AddressData cez make() a deleguje na addAddress(); bez type dostane adresa default_type. Pozor, argument sa tu volá countryIsoCode, nie countryIso:
use Illuminate\Support\Collection;
use RoundlyConsulting\Addresses\Enums\AddressType;
$address = $customer->createAddress(
city: 'Bratislava',
street: 'Somewhere 1',
postalCode: '81101',
countryIsoCode: 'sk', // normalised to 'SK'
name: 'HQ',
isPrimary: true,
type: AddressType::Billing,
meta: Collection::make(['floor' => 3]),
);CreateAddressAction
Adresár, builder aj trait delegujú na CreateAddressAction. Získajte ju z kontajnera a vytvoríte adresu na ľubovoľnom Eloquent modeli, s traitom aj bez neho — akcia vloží záznam a pri isPrimary: true ho v tej istej transakcii povýši, potom odošle AddressCreated (a pri povýšení PrimaryAddressChanged):
use RoundlyConsulting\Addresses\Actions\CreateAddressAction;
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
// works on any Eloquent model — the HasAddresses trait is not required
$address = app(CreateAddressAction::class)->execute(
$warehouse,
AddressData::make(
city: 'Bratislava',
street: 'Somewhere 1',
postalCode: '81101',
countryIso: 'SK',
isPrimary: true,
),
);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.