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