Developer Documentation
Developer Documentation
Account Area
Account Area
What are the default pages in the account area?
The following classes are in the Aero\AccountArea\Http\Responsesnamespace. Class Route Descriptio...
What are the default sets in the account area?
The following classes are in the Aero\AccountArea\Http\Responsesnamespace. Class Method Route Acc...
What are the default forms in the account area?
The following classes are in the Aero\AccountArea\Http\Formsnamespace. Class Description AccountA...
How do I inject into a slot in the account area?
You can inject into account area slots using the Aero\AccountArea\AccountAreaSlot::injectmethod. ...
How do I configure the account area?
ENV Variables Variable Default Description AERO_ACCOUNT_AREA_THEME aerocommerce/account-area Defi...
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\AccountA...
How do I extend a form in the account area?
Forms can be extended using a pipeline from your modules service providers setup method or your p...
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 ...
How do I extend a page or set in the account area?
Account Area Pages/Sets are Response Builders (link) which means that they can be extended using ...
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.cssin yo...
How do I create a new form for the account area?
To create a form you need to create a class that extends the AccountAreaFormclass. The $section...
What are the available slots in the account area?
The following slots can be injected into. orders.order.card.header- orders.order.card.dispatched...
Admin Dashboard Lenses
Admin Dashboard Lenses
What are the default dashboard lenses available?
The default dashboard lenses are stored in the admin configuration file as an array called dashbo...
What is a dashboard lens?
Dashboard lenses are the blocks of content that make up the interactive part of the admin dashboa...
How do I create a custom dashboard lens?
To create a dashboard lens you need to create a class that extends Aero\Admin\AdminLensand imple...
How do I use a custom view for my dashboard lens?
You can optionally make your dashboard lens use a custom view. To do this you need to set the pro...
How do I add a custom dashboard lens to the dashboard?
To add your custom dashboard lens to the dashboard you need to register it with the admin and the...
How do I remove a dashboard lens from the dashboard?
You are able to extend Aero\Admin\Http\Responses\AdminDashboardPageand use the removeLensmethod. ...
Admin Filters
Admin Filters
What is an admin filter?
Admin filters are the filters that populate the sidebars of reports and resource lists. As the na...
How do I create a custom admin filter?
To create a custom admin filter you need to create a class that extends Aero\Admin\Filters\AdminF...
How do I create a checkbox list admin filter?
To create a checkbox list admin filter you need to create a class that extends Aero\Admin\Filters...
How do I create an options date range admin filter?
The options date range admin filter works in the same way as the date range admin filter but disp...
How do I create a dropdown admin filter?
To create an options date range admin filter you need to create a class that extends Aero\Admin\F...
How do I create a date range admin filter?
To create a date range admin filter you need to create a class that extends Aero\Admin\Filters\Da...
How do I create a searchable select admin filter?
To create an options date range admin filter you need to create a class that extends Aero\Admin\F...
Admin Product Picker Component
Admin Product Picker Component
How do I use the product picker in my custom module?
The Product Picker provides a modal that lets users select a single or many products/variants wit...
What are the available props for the product picker?
Prop Type Description get-products-url String This is the only required prop. This is the URL for...
What are the available events for the product picker?
Event Description products-selected This event emits when the action button is clicked (bottom ri...
Admin Reports
Admin Reports
How do I create a custom report?
To create and register a custom report you need to use the Aero\Admin\AdminReportfacade inside of...
How do I add lenses to my custom report?
You need to create a class for your lens that extends Aero\Admin\Reports\ReportLensand implements...
How do I add a table to my custom report?
You need to create a class for your table that extends Aero\Admin\Reports\ReportTableand implemen...
How do I add exporters to my custom report?
To add an exporter to your report you need to ensure the report uses the Aero\Admin\Reports\Trait...
How do I extend existing reports?
Reports can be extended using a pipeline from your modules service providers setup method or your...
How do I add admin filters to my custom report?
You need to create an Admin Filter class as shown in the article "How do I create a custom report...
Admin Slots
Admin Slots
Admin Transformers
Admin Transformers
Admin Vue
Admin Vue
How do I add custom clips to the redactor editor
Clips is a plugin for the Redactor editor that allows you to create a list of frequently used cod...
How do I use Vue in the admin?
When in an admin's Blade view file you can use any Vue directive (such as v-for, v-if, @clicke...
How do I add a custom Vue component to the admin?
This repo (https://github.com/aerocargo/admin-example-vue You need to add the assetLinksfunction...
Blocks
Blocks
How do I import content blocks?
In order to export content blocks, we will require an Aero package. To install this package, type...
How do I export content blocks?
In order to export content blocks, we require an Aero package. To install this package, type the ...
Introduction to blocks
Whilst the layout of the storefront is dictated by the theme, the displayed content is managed th...
Configuration
Configuration
How do I register new permissions?
// add a single permission \Aero\Admin\Permissions::add('custom'); // add multiple permissions \A...
How do I check for permissions?
When checking for permission, you should always be as explicit as you can. For example, checking ...
How do I change how order references are generated?
You can set an order reference generator to define how order references are generated. To do this...
What is the robots file and how does it differ from normal?
The robots.txt file provides instructions for web crawlers and bots that index your store. Aero a...
How do I store product images on S3
You need to configure and set up your Laravel project for the S3 storage driver. You can read mor...
Customization
Customization
How do I remove the manufacturers name from the order items name?
By default if a product name doesn’t contain the manufacturer name already, the manufacturer name...
How do I remove the manufacturer from the product slug/url?
The manufacturer name is automatically prepended to the product slug (its URL). If you wish for t...
Developer Faqs
Developer Faqs
Does Aero support Laravel Homestead installation?
Yes, Homestead is supported on Windows, Mac or Linux provided your Vagrant box configuration meet...
Can I use Aero project credentials across multiple projects?
No, Credentials must not be shared between projects.
Is Laravel required to run Aero?
Yes, the Aero platform is built on top of the Laravel framework. Knowledge of Laravel is not esse...
What versions of Elasticsearch does Aero support?
Aero supports both Elasticsearch 6.x and 7.x. Support for Elasticsearch 6.x is provided by the 0....
Which versions of PHP will Aero run on?
Aero requires PHP Version 7.2 and above.
How do I configure the PHP memory limit?
Due to the number of fields that are sometimes present in the admin, it may be necessary to adjus...
Events
Events
How do I create a new event listener?
To create a new listener class for one of our events, we can use Artisan to scaffold the listener...
What are the events available?
Account AddressCreated - AddressDeleted - AddessUpdated - CustomerManualylCreated - CustomerRegis...
How do I add a custom event to a Service Provider?
Laravel events provide an observer implementation, allowing you to listen and observe for specifi...
What are event listeners?
Event listeners, as the name suggests, listen to events that have been assigned to them. This mea...
How do I create a new event?
To create a new event, we first have to scaffold the class using Artisan in the project root dire...
How do I make custom mail notification events?
To create an event that shows up in the Mail Notifications part of the admin your event needs to ...
Extending Core Functionality
Extending Core Functionality
What are models and how do I use them?
All models provided as part of the Aero core platform are Eloquent models For example, if a modul...
How do I add a custom field to the new and edit product page?
In this mini tutorial we will add a notes field to the product new and edit page for the product ...
What are the available commands?
php artisan make:module This command scaffolds a module for you (you need to provide a valid name...
How to add a custom field to the address forms?
This short tutorial will walk you through adding an address line 3 field to all of the address fo...
How do I extend the address forms?
Aero has address forms in the checkout, account-area, and admin that can be extended. Storefront ...
How do I add settings to my model?
This tutorial will explain the steps required to add settings to your model and assumes you have ...
How do I add a custom price to a product with a module?
In this mini tutorial we will add some checkboxes to the product page that when checked add an ad...
General
General
How do I set up a slug validator?
You can control if a collection of slugs is valid or not by setting your own validator: \Aero\Sto...
How do I add a route to the CSRF exception list?
If you do not want your route to require a valid CSRF token Code To add a route to the exceptions...
What queues does Aero use?
Queues are used so that HTTP requests can remain snappy and more intensive code can be executed l...
How to Set the Page Title for the Admin
By default the page title for every admin page is generated from the route name. If you would lik...
Google Shopping Feed
Google Shopping Feed
How do I configure the Google Shopping feed?
Generating the taxonomy Generating the taxonomy table is a required task after we’ve initially in...
How do I assign Google categories?
Google categories can be assigned to categories, or directly to the product. It can be set up eit...
How do I export the Google Shopping feed?
To export the feed we need to navigate into the module’s section in the admin, and then to Google...
How do I generate a Google Shopping feed?
In order to generate a Google Shopping feed, it is necessary to install an Aero dependency in for...
Installation Deployment
Installation Deployment
How do I install Aero on Mac?
Before continuing, please ensure your Mac is running macOS Mojave (10.14) or newer. There are a c...
How do I install Aero on Windows?
Homestead We are currently unable to offer support for the configuration of Homestead, or any iss...
What are the system requirements?
Your system must satisfy the following requirements: PHP (>= 7.2) with BCMath, Ctype, JSON, Mbstr...
Introduction
Introduction
Introduction to backend admin slots
Slots allow for a module to include its own view on existing admin pages. See our section on back...
Introduction to collections for developers
Collections are not what the developer might associate with Laravel’s immutable structure, but a ...
Introduction to permissions for developers
As an agency, you will likely need to restrict the information and actions of admin accounts belo...
Introduction to transformers
Transformers are used by the admin on some edit pages to transform data from PHP into an json enc...
Introduction to events for developers
Events are a method of notifying different parts of Aero of tasks that have either been completed...
Introduction to pipelines
Pipelines provide a convenient way to manipulate a given payload. This payload can be an object o...
Introduction to the account area
The account area provides an extendable area where your customers can view their orders and manag...
Introduction to response builders
Response builders are Aero's unique solution to serving storefront pages. Based on the concept of...
Introduction to listings and search
Aero offers out-of-the-box listings and search system which is powered by Elasticsearch Please no...
Introduction to payment drivers
A payment driver is the brain behind the payment method and serves as a bridge to the payment gat...
What is an Aero Commerce Agora account and why do I need it?
To get started you'll need an Agora account. Your Agora account is used to download the platform ...
How do I obtain package repository credentials?
Once logged in to Agora, head over to the projects section and click the New project button. You'...
Introduction to the admin
The backend admin (the "admin") is the password-protected back office where administrative tasks ...
Introduction to resource lists
Resource lists allow a table to be extended through additional columns, filters, or sort bys and ...
Introduction to Laravel PHP Framework
The Aero platform is built using the Laravel PHP framework Before developing with Aero, we recomm...
Listings And Search
Listings And Search
How do I create a custom sort order for the listings pages?
When you set the sort get parameter in a listing pages url (e.g. ?sort=name-az), a method is call...
What are the available documents for listings and search?
There are 2 documents available: Aero\Search\Elastic\Documents\ListingsDocument This document is ...
How do I re-index listing and search documents?
Aero automatically manages indexing changes to documents. For example, if a product's stock level...
How do I add custom facets to listing and search?
Faceted navigation in eCommerce allows customers the ability to refine down a catalog of products...
How do I setup the search index?
Firstly, you should ensure that the Elasticsearch host information is defined in the store's .env...
How do I re-build the listings and search index?
At times (especially during the development phase of a store build), it may be necessary to delet...
How do I extend the document structure for listings and seach?
One of the most useful features of the listings and search system is the ability to add custom da...
How do I filter listings?
There may be occasions where you need to pre-filter listings. For example, you may want to ensure...
How to Extend the Elastic Search Listing Model
The Aero\Search\Elastic\Models\Listingmodel is built up from an array of data returned from elas...
Module Development
Module Development
How do I register a custom Vue component for my module
To register a Vue component for our module, we will need to create a JavaScript file for our comp...
Anatomy of a custom module
└─ module └─ database └─ migrations └─ public └─ resources ...
How do I create a custom module?
When interacting with the admin, especially when making a custom module, it is important to requi...
How do I setup routes for my custom module?
There are a few necessary steps to create and properly configure module routing. Creating routes ...
Payment Drivers
Payment Drivers
What is the payment driver interface in my payment driver?
All payment gateway drivers must implement the Aero\Payment\Contracts\PaymentDriverinterface. Th...
What are the capturing methods in my payment driver?
here are two types of capturing methods: Automatic– the payment is both authorised and captured w...
How do I cancel a payment in my payment driver?
If capturing of the payment is done at a later stage to the initial authorisation, the payment ga...
How do I capture a payment in my payment driver?
If the gateway provides the option to defer capturing the payment (authorising and capturing are ...
How do I refund a payment in my payment driver?
If the payment gateway provides the ability to externally make refund requests, the payment drive...
What are operating modes in my payment driver?
There are two modes a gateway can operate: ECOM– a standard ecommerce online transaction, typical...
How do I support express checkout in my payment driver?
If the payment gateway stores customer information, this can be used to populate the contact info...
Can I restricting availability of my payment driver?
It is likely that a payment gateway could have restrictions on when it can be used. For example, ...
How do I return a payment response in my payment driver?
To unify all payment gateway driver communication, an Aero\Payment\Responses\PaymentResponseclas...
How do I register the transaction in my payment driver?
When a payment method is selected that uses the gateway driver, the registermethod is called. Wi...
How do I complete the transaction in my payment driver?
Once the payment gateway has handled the customer inputting their secure details (such as card in...
How do I display payment icons on checkout in my payment driver?
To improve brand awareness of the payment provider during the checkout process, a label view can ...
How do I restrict the availability of my payment driver?
It is likely that a payment gateway could have restrictions on when it can be used. For example, ...
Payment Gateways
Payment Gateways
Php Traits
Php Traits
Aero\\Common\\Traits\\CanExtendFillable
This trait can be added to a model class. When added your model will have the ability to have fil...
Aero\\Common\\Traits\\CastsToJavaScript
This trait can be added to a model class. This trait provides a way of defining attributes that s...
Aero\\Common\\Traits\\Sluggable
This trait can be added to a model class. The trait adds a relationship to Aero\Store\Models\Slug...
Aero\\Catalog\\Traits\\Taggable
This trait can be added to a model class. The trait adds the ability to add tags to the model. Th...
Aero\\Common\\Traits\\CanHaveAdditionalAttributes
This trait can be added to a model class. When added your model will have the ability to have add...
Aero\\Catalog\\Traits\\HasPrices
This trait can be added to a model class. This trait adds prices to the model. The trait adds the...
Aero\\Store\\Traits\\Seoable
This trait can be added to a model class. The trait adds a relationship to Aero\Store\Models\Se...
Aero\\Responses\\Traits\\HasSections
This trait can be added to a response builder class. It adds useful methods for managing sections...
Aero\\Admin\\Traits\\HasPermissions
This trait adds the ability to add permissions to a class easily. The trait adds the following me...
Aero\\Admin\\Traits\\IsExtendable
This trait can be added to a class. This trait can be used on Pipelines (more information "introd...
Pipelines
Pipelines
Resource Lists
Resource Lists
How do I create a custom bulk action?
If we wish to add a new bulk action to a screen within the admin, all we have to do is create the...
What are the default resource lists?
The following classes are in the Aero\Admin\ResourceListsnamespace and any class that doesn’t hav...
How do I create my own resource list?
To create a resource list you need a normal Laravel controller and a class that extends Aero\Admi...
How do I extend an exisiting resource list?
Adding a New Column To add columns to a resource list you can use the addColumn, addColumnBefore,...
What is a bulk action?
A bulk action allows for the selection of multiple values from a list, and apply some logic to it...
How do I add a custom column to the product list?
As the products list is a resource list you can add a custom column like this: More information o...
How do I add a custom column to the order list?
As the orders list is a resource list you can add a custom column like this: More information on ...
Response Builders
Response Builders
How do I access the properties of the response builder?
All response builders hold properties that were assigned to them upon creation from the request. ...
How do I pass data to a response?
The most common task performed when extending responses, is setting additional data. Typically, f...
How do I redirect a response?
Sometimes you may wish to redirect the user to another location, either to an external site or wi...
How do I set the response status code?
There may be situations where the HTTP response status needs to be altered. By default, the retur...
How do I set response headers?
When extending the response builder, you can set HTTP headers to be sent with the response: \Aero...
How do I attach middlewear to a response builder?
Since Aero does not expose the underlying routes and controllers, middleware can be attached dire...
How do I extend responses?
Adding additional code to run on the response is as simple as calling the **extend()**method on t...
How do I change the response view?
For responses that return HTML, a Twig view file is used. Whilst these are originally defined, th...
What are the available responses from the response builder?
Core Class Description View Homepage The homepage of the store. homepage.twig ProductPage The pro...
Settings
Settings
What are the settings available to developers?
Settings allow you to add dynamic values to your modules that can be modified by admin users easi...
Do do I set the default value of my custom setting?
You can add a default value to any setting by using the defaultmethod and passing your default va...
How do I register custom settings?
To register settings you need to use the Aero\Common\Facades\Settingsfacade from the setupmethod ...
How do I access a custom setting?
You can access a setting by using the settingfunction that is available in PHP, Blade, and Twig. ...
What are the available setting types?
Setting Description $group->array(‘allow_list’); Returns an array. $group->boolean(‘enabled’); Re...
How do I configure the admin edit page?
By default your setting group is editable through the admin by a generated edit page. You cannot ...
How do I handle translations?
When defining your setting groups title/summary, or a settings label/hint you can make use of Lar...
How do I add settings to the product model?
Using the same syntax as when you create settings <?php namespace Acme\MyModule; use Aero\Catalog...
Validation
Validation
How do I create custom validation requests?
To create a custom validation request, we need to extend the AeroRequestabstract class that’s loc...
How do I use validation requests?
To use a custom validation request, we have to replace the request that is passed to the controll...
How do I display validation error messages?
There are multiple ways of displaying your validation errors. From the backend perspective, the r...
What are the available validation requests?
Example: <?php namespace Aero\Store\Http\Requests; use Aero\Common\Requests\AeroRequest; class Up...
How do I set a custom order validator for shipping methods?
You can define logic that will be used to confirm if a shipping method is available for a specifi...
How do I set a custom order validator for shipping rates?
You can override the default logic that decides whether a shipping rate is applicable to an order...
How do I use a custom total item price totalizer for a shipping rate?
Setting a custom item price totalizer allows you to define the logic used to get the total price ...
How do I use a custom total item weight totalizer for a shipping rate?
Setting a custom item weight totalizer allows you to define the logic used to get the total weigh...