Account Area
- General
- Slots
- Pages
- What are the default pages in the account area?
- How do I create a custom page in the account area?
- How do I add a section to an existing account area page?
- Sets
- Forms
General
How do I add a Custom CSS File to the account area?
You can add a custom CSS file to the account area by creating a file named account-area.css in your public directory.
Example contents where we're overriding the default colours:
:root {
--bpa-color-primary: deepskyblue;
--bpa-color-success: forestgreen;
--bpa-color-warning: darkorange;
--bpa-color-error: red;
--bpa-color-helpbox: aliceblue;
--bpa-color-content-background: ghostwhite;
}
You can also place this file in your theme if preferred.
How can I configure the account area?
ENV Variables
| Variable |
Default |
Description |
AERO_ACCOUNT_AREA_THEME |
aerocommerce/account-area |
Defines the namespace that should be registered as having the views and resources for the account area. This should only be changed under unique circumstances. |
AERO_ACCOUNT_AREA_LAYOUT |
layouts.main |
Defines the layout that the account area views use. If the layout provided doesn’t exist, account-area::layouts.blank will be used. |
Config File
If you would like to change any of the config values you can publish the config file by running:
php artisan vendor:publish --provider="Aero\AccountArea\ServiceProvider"
Once the file is published you will be able to edit it through the config php file created at /config/aero/account-area.php.
date_format
This defines the format used when displaying any dates in the account area. js F Y by default, e.g. 25/09/2026.
subscription_status_state_class
Maps subscription status states to specific colors, e.g. active => success. So when a subscription has a status with active state, the orb will have the class bpa-indicator--success (green).
order_status_state_class
Maps order status states to specific colors, e.g. active => success. So when an order has a status with active state, the orb will have the class bpa-indicator--success (green).
order_status_radio_options
This defines the order statuses shown in the radio options on the orders page and what order status states they map to.
order_years
This defines the number of previous years to display in the years dropdown on the orders page.
page_sections
This defines the sections that make up each page by default. You can add/edit/remove sections through code, it is not necessary to adjust these values usually.
form_sections
This defines the sections that make up each form by default. You can add/edit/remove sections through code, it is not necessary to adjust these values usually.
slots
This defines the views that are injected into slots by default.
links
This defines the links that should be in the navbar by default. You can add/edit/remove links through code, it is not necessary to adjust these values usually.
Slots
What are the available account area slots?
Navbar
Addresses
addresses.address.card.footer
Orders
orders.order.card.dispatchedorders.order.card.not-dispatchedorder.header.buttonsorders.order.card.headerorders.order.card.footer
Subscriptions
subscriptions.subscription.card.headersubscriptions.subscription.card.footer
How do I inject into account area slots?
Account Area Slots allow you to add content within existing account area pages. The examples below show how to inject a view into the orders page.
For a simple use case, simply provide a view:
\Aero\AccountArea\AccountAreaSlot::inject('order.header.buttons', 'acme::button');
For more advanced use cases, instead of passing a view directly, you can provide a callback function:
\Aero\AccountArea\AccountAreaSlot::inject('order.header.buttons', function ($data) {
// add custom variables to the $data array
return view('acme::button', $data);
});
These injections should typically sit inside the boot method of a Service Provider
Pages
What are the default pages in the account area?
| Class |
Route |
Description |
AccountLoginPage |
login |
A page where users can log in. |
AccountRegisterPage |
register |
A page where guests can register. |
AccountPasswordForgotPage |
password.forgot |
A page where users can send a password reset email to their email. |
AccountPasswordResetPage |
password.reset |
A page where users can reset their password. |
AccountOrdersPage |
account.orders |
A page that lists all of a user's orders and lets them filter/search. |
AccountOrderViewPage |
account.view-order |
A page that shows more information about an order. |
AccountAddressesPage |
account.addresses |
A page that lists all of the users addresses. |
AccountAddressNewPage |
account.new-address |
A page where users can create a new address, |
AccountAddressEditPage |
account.edit-address |
A page where users can edit one of their addresses. |
AccountDetailsPage |
account.details |
A page where users can update their account details and change their password. |
AccountInvoicePage |
account.view-invoice |
A simple invoice for an order - currently not linked to from anywhere. |
AccountOverviewPage |
account |
The first page a user sees after they log in - currently redirects to the orders page. |
The above classes reside in the Aero\AccountArea\Http\Responses namespace.
How do I create a custom page in the account area?
To create and register a custom account area page you need to use the Aero\AccountArea\AccountArea::registerPage() helper method.
This method expects you to pass a class that extends Aero\AccountArea\AccountAreaPage:
\Aero\AccountArea\AccountArea\AccountArea::registerPage(\Aerocargo\Acme\CustomPage::class);
Your account area page class must implement the title(), route(), and routeName() methods that all should return a string.
It’s common practice to use Laravel Localization for the title and route so that they can change depending on the language used. You should not use this for the routeName as the routeName is used in code to refer to the route and therefore should never change.
You should also define a protected static steps and middleware array and a protected sections array:
- The static steps array can be used to define any extra response steps required for your page.
- The middleware array can be used to define any middleware required for your page (the most useful being ‘account’ which means users need to be logged in to view your page).
- The sections array defines the views that make up your page.
For example, here's how aerocargo/wishlists defines its page:
class WishlistPage extends \Aero\AccountArea\AccountAreaPage
{
use \Aero\AccountArea\Traits\HasAccountAreaLink;
protected static $steps = [
Steps\AttachWishlist::class,
];
protected static $middleware = [
'account',
];
protected $sections = [
'navbar' => 'account-area::sections.navbar',
'page-header' => 'account-area::partials.page-header',
'wishlist' => 'wishlist::account-area-wishlist',
];
static function title(): string
{
return __('My Wishlist');
}
static function route(): string
{
return __('wishlist');
}
static function routeName(): string
{
return 'account.wishlist';
}
public static function toLink(): array
{
return [
'icon' => 'wishlist::icons.heart',
'text' => 'Your Wishlist',
];
}
}
You can add your page to the navbar using the addLink() method:
\Aero\AccountArea\AccountAreaPage::extend(function (\Aero\AccountArea\AccountAreaPage $page, \Closure $next) {
$page->addLink(\Aerocargo\Wishlist\Http\Responses\WishlistPage::class);
return $next($page);
});
For addLink to work, your page needs to use the \Aero\AccountArea\Traits\HasAccountAreaLink trait and implement the toLink() method (see the wishlist example above)
How do I add a section to an existing account area page?
You can use the addSection() method(s) to add a section to an existing form:
\Aero\AccountArea\Http\Responses\AccountLoginPage::extend(function (\Aero\AccountArea\Http\Responses\AccountLoginPage $page, \Closure $next) {
// Add it as the first section
$page->addSection('acme', 'acme::section');
// Add it after a specific section
$page->addSectionAfter('acme', 'acme::custom', 'login-form');
// Add it before a specific section
$page->addSectionBefore('acme', 'acme::custom', 'login-form');
return $next($page);
});
If you need to see the keys of the existing columns in order to position your new column appropriately, you can dump them out:
\Aero\AccountArea\Http\Responses\AccountLoginPage::extend(function (\Aero\AccountArea\Http\Responses\AccountLoginPage $page, \Closure $next) {
dd($page->getSections()->keys()->toArray());
return $next($page);
});
Sets
What are the default sets in the account area?
| Class |
Method |
Route |
AccountLoginSet |
Post | login |
AccountLogoutSet |
Post | logout |
AccountRegisterSet |
Post | register |
AccountPasswordForgotSet |
Post | password.forgot |
AccountPasswordResetSet |
Post | password.reset |
AccountAddressNewSet |
Post | account.new-address |
AccountAddressEditSet |
Put | account.edit-address |
AccountAddressMakeDefaultSet |
Put | account.make-default-address |
AccountDetailsSet |
Put | account.details |
AccountAddressDelete |
Delete | account.delete-address |
The above classes reside in the Aero\AccountArea\Http\Responses namespace.
How do I create a custom set in the account area?
Sets are used for POST/PUT/DELETE requests.
To create and register a custom account area set you need to use on of the following methods:
Aero\AccountArea\AccountArea::registerPost()Aero\AccountArea\AccountArea::registerPut()Aero\AccountArea\AccountArea::registerDelete()
These methods expects you to pass a class that extends Aero\AccountArea\AccountAreaSet.
\Aero\AccountArea\AccountArea\AccountArea::registerDelete(\Aerocargo\Acme\CustomDelete::class);
Your account area set class must implement the route() and routeName() methods that all should return a string.
You should also define a protected static steps and middleware array:
- The steps array can be used to define any extra response steps required for your set.
- The middleware array can be used to define any middleware required for your set (the most useful being ‘account’ which means the user needs to be logged in).
For example, here's how aerocargo/wishlists defines its delete:
class WishlistDelete extends \Aero\AccountArea\AccountAreaSet
{
protected static $steps = [
Steps\DeleteWishlist::class,
];
protected static $middleware = [
'account',
];
static function route(): string
{
return __('wishlist');
}
static function routeName(): string
{
return 'account.wishlist';
}
}
Forms
What are the default forms in the account area?
| Class |
Description |
AccountAddressEditForm |
The edit address form. |
AccountAddressNewForm |
The new address form. |
AccountDetailsForm |
The account details form. |
AccountLoginForm |
The login form. |
AccountPasswordForgotForm |
The forgotten password form. |
AccountPasswordResetForm |
The password reset form. |
AccountRegisterForm |
The register form. |
The above classes reside in the Aero\AccountArea\Http\Forms namespace.
How do I create a custom form in the account area?
To create a form you need to create a class that extends the \Aero\AccountArea\AccountAreaForm class:
- The
$sectionsarray lists the views used to render the form. - The
method()method defines the method that the form will use (this should bepost,get,put, ordelete). - The
route()method should return the URL for the form.- A
$datavariable is accessible in case the route requires parameters that are available in the data.
- A
For example, here's how the login form is defined:
class LoginForm extends \Aero\AccountArea\AccountAreaForm
{
protected $sections = [
'email' => 'account-area::partials.email-input',
'password' => 'account-area::partials.password-input',
'forgot-password' => 'account-area::partials.login-forgot-password-link',
'submit' => 'account-area::partials.login-button',
];
protected function method(): string
{
return 'post';
}
protected function route($data): string
{
return route('login');
}
}
Don't forget to register your form:
\Aero\AccountArea\AccountArea::registerForm(MyForm::class);