How do I extend the configuration page?
The configuration page can be extended to customise existing configuration groups, add new configurations, or register entirely new configuration groups.
Configuration groups and configurations are built using a pipeline, allowing you to modify the default configuration page without replacing the existing definitions.
The examples below show how to:
-
Change the title of an existing configuration group
-
Add a new configuration to an existing group
-
Edit an existing configuration
-
Create and register a new configuration group
Changing the title of a configuration group
\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup::extend(function (\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup $group, \Closure $next) {
$group->title('New Title');
return $next($group)
});
Adding a new configuration to a configuration group
\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup::extend(function (\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup $group, \Closure $next) {
$group->configuration('acme')
->title('Acme')
->description('Description goes here...')
->link(route('admin.acme'))
->showWhen(function () {
return \Illuminate\Support\Facades\Gate::check('acme.view');
});
return $next($group)
});
Editing an existing configuration in a configuration group
\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup::extend(function (\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup $group, \Closure $next) {
$group->configuration('order_statuses')
->title('New Title')
->description('New description goes here...');
return $next($group)
});
Adding a new configuration group to the configuration page
First, create a class that extends the \Aero\Admin\Configuration\ConfigurationGroup pipeline and use the build method to scaffold the group:
class AcmeConfigurationGroup extends \Aero\Admin\Configuration\ConfigurationGroup
{
protected function build(): \Aero\Admin\Configuration\ConfigurationGroup
{
return $this
->title('Acme')
->configurations([
Configuration::make('first')
->description('Description for first')
->link(route('admin.acme.first')),
Configuration::make('second')
->description('Description for second')
->link(route('admin.acme.second')),
]);
}
}
Then add it to the Aero\Admin\Http\Responses\AdminConfigurationPage:
// Insert it at the end of the configuration page
\Aero\Admin\Http\Responses\AdminConfigurationPage::addGroup(AcmeConfigurationGroup::class);
// Insert it before the order management configuration group
\Aero\Admin\Http\Responses\AdminConfigurationPage::addGroupBefore(
AcmeConfigurationGroup::class,
\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup::class
);
// Insert it after the order management configuration group
\Aero\Admin\Http\Responses\AdminConfigurationPage::addGroupAfter(
AcmeConfigurationGroup::class,
\Aero\Admin\Configuration\Groups\OrderManagementConfigurationGroup::class
);
// Insert it at the index provided
\Aero\Admin\Http\Responses\AdminConfigurationPage::insertGroup(AcmeConfigurationGroup::class, 0);