Skip to content

Address Book Page

URL: /address/book Template: Modules/Application/resources/views/template/book.blade.php

Requires authentication. Displays a customer's saved addresses and allows adding, editing, and deleting them.


Page Variables

Variable Type Description
$addresses array All saved addresses for the current customer
$states array Available US states for the state dropdown
$countries array Available countries for the country dropdown

Address Object Properties

Each $addresses item:

Property Type Description
address_id int Unique address ID
fname string First name
lname string Last name
company string Company name
address1 string Street address line 1
address2 string Street address line 2
city string City
state string State code
country string Country code
zipcode string ZIP/postal code
phone string Phone number
fax string Fax number
isDefault int 0\|1 Whether this is the default shipping address

Using tagAddressFormat()

The tagAddressFormat() helper renders a formatted address block as HTML with embedded data attributes for use by JS edit forms.

{{-- Render a formatted address with data attributes --}}
<div class="address-card" id="address-{{ $address->address_id }}">
    {!! tagAddressFormat($address) !!}
    <div class="mt-2">
        <button class="btn btn-sm btn-secondary edit-address-btn" data-id="{{ $address->address_id }}">
            Edit
        </button>
        <button class="btn btn-sm btn-outline-danger delete-address-btn" data-id="{{ $address->address_id }}">
            Delete
        </button>
    </div>
</div>

Template Example

@extends('layout.layout')

@section('headtitle')
    <title>Address Book | {{ $page->settings->siteTitle }}</title>
@endsection

@section('content')
<div class="container mt-4">
    <h1>Address Book</h1>

    <div class="row">
        {{-- Existing Addresses --}}
        <div class="col-md-8">
            <h4>Saved Addresses</h4>
            @forelse($addresses as $address)
                <div class="card mb-3">
                    <div class="card-body">
                        {!! tagAddressFormat($address) !!}
                        @if($address->isDefault)
                            <span class="badge bg-success">Default Address</span>
                        @endif
                    </div>
                    <div class="card-footer d-flex gap-2">
                        <button class="btn btn-sm btn-secondary">Edit</button>
                        <button class="btn btn-sm btn-outline-danger">Delete</button>
                        @if(!$address->isDefault)
                            <button class="btn btn-sm btn-outline-primary">Set as Default</button>
                        @endif
                    </div>
                </div>
            @empty
                <p>No addresses saved yet.</p>
            @endforelse
        </div>

        {{-- Add New Address Form --}}
        <div class="col-md-4">
            <h4>Add New Address</h4>
            <form method="post" action="{{ customUrl('address_book') }}">
                @csrf
                <div class="mb-2">
                    <input type="text" name="fname" class="form-control" placeholder="First Name" required>
                </div>
                <div class="mb-2">
                    <input type="text" name="lname" class="form-control" placeholder="Last Name">
                </div>
                <div class="mb-2">
                    <input type="text" name="address1" class="form-control" placeholder="Street Address" required>
                </div>
                <div class="mb-2">
                    <input type="text" name="city" class="form-control" placeholder="City" required>
                </div>
                <div class="mb-2">
                    <select name="state" class="form-select">
                        @foreach($states ?? [] as $code => $name)
                            <option value="{{ $code }}">{{ $name }}</option>
                        @endforeach
                    </select>
                </div>
                <div class="mb-2">
                    <input type="text" name="zipcode" class="form-control" placeholder="ZIP Code" required>
                </div>
                <div class="mb-2">
                    <select name="country" class="form-select">
                        @foreach($countries ?? [] as $code => $name)
                            <option value="{{ $code }}">{{ $name }}</option>
                        @endforeach
                    </select>
                </div>
                <div class="mb-2">
                    <input type="text" name="phone" class="form-control" placeholder="Phone">
                </div>
                <button type="submit" class="btn btn-primary w-100">Save Address</button>
            </form>
        </div>
    </div>
</div>
@endsection