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

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ťTypPredvolené
citystring—
streetstring—
postalCodestring—
countryIsostring—
name?stringnull
type?AddressTypenull → config default_type
isPrimaryboolfalse
meta?Collectionnull
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 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.