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 bulk action using the BulkAction facade. The bulk action also requires a specific Resource List, for example for Products.

BulkAction::create(BulkActionClass::class, ResourceList::class)
        ->permissions('bulkaction.permission')
        ->title('Title');

The above code would be instantiated within a Service Provider, whether it is a module service provider or the AppServiceProvider.

Example:

If we were to create a new bulk action for exporting products, we would first need to create a class extending BulkActionJob:

BulkAction::create(ExportProducts::class, ProductsResourceList::class)
        ->notRunnable()
        ->permissions('products.export')
        ->title('Export products');

 

Properties

Bulk Actions have a number of properties, each responsible for affecting a different aspect of the bulk action.

 

Wide Content

We can choose to display the contents of our bulk action in a wider container, which can prove to be more useful for certain modules. In order to display its contents in a container stretched to the width of the screen, apply the following function to the facade while creating it:

BulkAction::create(BulkActionClass::class, ResourceList::class)
        ->wideContent()
        ->permissions('bulkaction.permission')
        ->title('Title');

 

Runnable & Not Runnable

Not every bulk action is the same, and it’s possible to remove the Run button from the bulk action in order to replace it with a custom button, for example calling the API. In order to remove the built-in Run button for a particular bulk action, apply the following function to the facade while creating it:

BulkAction::create(BulkActionClass::class, ResourceList::class)
        ->notRunnable()
        ->permissions('bulkaction.permission')
        ->title('Title');

 

Confirm

We can set the bulk action to prompt the user before performing its intended action by simply chaining a method to the BulkAction creation:

BulkAction::create(BulkActionClass::class, ResourceList::class)
        ->confirm()
        ->permissions('bulkaction.permission')
        ->title('Title');

The prompt will now ask the user if they are sure of their selection.

 

Title

We can set a custom title/main heading for the bulk action content, this can be done by chaining a function to the facade we use for creating the bulk action, e.g.:

BulkAction::create(BulkActionClass::class, ResourceList::class)
        ->title('Your title')
        ->permissions('bulkaction.permission')
        ->title('Title');

 

View

Aero has the ability to display a specific view when it performs the bulk action, this can be done by chaining a function to the facade we use for creating the bulk action, e.g.:

BulkAction::create(BulkActionClass::class, ResourceList::class)
        ->view(‘namespace::bulk.form’)
        ->permissions('bulkaction.permission')
        ->title('Title');

Articles in this section

Was this article helpful?
0 out of 0 found this helpful