wamesk/laravel-nova-address-field

Laravel Nova 4 Address field

1.4.3 2024-11-07 15:42 UTC

This package is auto-updated.

Last update: 2025-01-07 16:04:28 UTC


README

  • Save address in one JSON database column
  • Personal or business address
  • Google Maps Autocomplete

Requirements

  • laravel/nova: ^4.0

Installation

composer require wamesk/laravel-nova-address-field

Usage

Address::make(__('customer.field.address'), 'address')

Settings

Cast

Setting casts in model

use Wame\Address\Casts\AddressCast;

protected function casts(): array
{
    return [
        'address' => AddressCast::class,
    ];
}

In one model, there can be more address columns

protected function casts(): array
{
    return [
        'billing_address' => AddressCast::class,
        'shipping_address' => AddressCast::class,
    ];
}

Attributes

$this->address->firstName; // John
$this->address->lastName; // Doe
$this->address->getName(); // John Doe
$this->address->street; // Baker street 3
$this->address->zipCode; // 08501
$this->address->city; // New York
$this->address->country; // SK
$this->address->getCountryTitle(); // Slovakia
$this->address->getCountryData();

$this->billing_address->isCompany; // true|false
$this->billing_address->companyName; // Apple Inc.
$this->billing_address->getName(); // Apple Inc.
$this->billing_address->businessId;
$this->billing_address->taxId;
$this->billing_address->vatId;
$this->billing_address->vatPayer; // true|false

$this->address->isComplete(); // true|false

$this->address->toArray();
$this->address->toJson();

Repeatable field

Package is also compatible with Nova repeatable field

Repeater::make('Address', 'address')
    ->repeatables([\Wame\Address\Fields\AddressRepeater::make()])
    ->asJson()

Google address autocomplete

If you add the Google Maps API key from https://console.cloud.google.com/ to the .env, you can search for addresses

GOOGLE_MAPS_API_KEY="AIza..."

It also stores the place coordinates latitude and longitude.

Helper

Helpers for preparing a fake address, returned AddressCast

\Wame\Address\Utils\AddressHelper::fakeAddress();
\Wame\Address\Utils\AddressHelper::fakeCompanyAddress();

\Wame\Address\Utils\AddressHelper::fakeAddress(['country' => 'SK']);
\Wame\Address\Utils\AddressHelper::fakeAddress(withName: false);

\Wame\Address\Utils\AddressHelper::fakeAddress()->toArray();
\Wame\Address\Utils\AddressHelper::fakeAddress()->toJson();