nova-kit/nova-queued-export-as-csv

Laravel Nova's Queued Export As CSV Action
87,544 21
Install
composer require nova-kit/nova-queued-export-as-csv
Latest Version:v2.3.0
PHP:^8.1
License:MIT
Last Updated:Mar 20, 2026
Links: GitHub  ·  Packagist
Maintainer: crynobone

Laravel Nova's Queued Export As CSV Action

tests Latest Stable Version Total Downloads Latest Unstable Version License

Installation

To install through composer, run the following command from terminal:

composer require "nova-kit/nova-queued-export-as-csv"

Usages

You can replace Laravel\Nova\Actions\ExportAsCsv with NovaKit\NovaQueuedExportAsCsv\Actions\QueuedExportAsCsv:

use Laravel\Nova\Actions\ExportAsCsv;
use Laravel\Nova\Http\Requests\NovaRequest;
use NovaKit\NovaQueuedExportAsCsv\Actions\QueuedExportAsCsv;

// ...

/**
 * Get the actions available for the resource.
 *
 * @return array<int, \Laravel\Nova\Actions\Action>
 */
public function actions(NovaRequest $request): array
{
    return [
        QueuedExportAsCsv::make(),
    ];
}

If you would like to change the storage disk to store the CSV file that is available for download, you may invoke the withStorageDisk() method when registering the action:

use NovaKit\NovaQueuedExportAsCsv\Actions\QueuedExportAsCsv;

// ...

return [
    QueuedExportAsCsv::make()->withStorageDisk('s3'),
];

You can also customise the response message by using the following code:

use Laravel\Nova\Actions\Action;
use NovaKit\NovaQueuedExportAsCsv\Actions\QueuedExportAsCsv;

// ...

return [
    QueuedExportAsCsv::make()->then(function () {
        return response()->json(Action::message('Action has been queued!'));
    }),
];

In order to handle the stored CSV, you need to listen to NovaKit\NovaQueuedExportAsCsv\Events\QueuedCsvExported event, as an example you can broadcast to Nova's Notification using the following listener class:

<?php

namespace App\Listeners;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Storage;
use Laravel\Nova\Notifications\NovaNotification;
use Laravel\Nova\URL;
use NovaKit\NovaQueuedExportAsCsv\Events\QueuedCsvExported;

class NotifyCsvExported
{
    /**
     * Handle the event.
     *
     * @param  \NovaKit\NovaQueuedExportAsCsv\Events\QueuedCsvExported  $event
     * @return void
     */
    public function handle(QueuedCsvExported $event)
    {
        $event->user->notify(
            NovaNotification::make()
                ->message('Your CSV is ready to download.')
                ->action('Download', URL::remote(Storage::disk($event->storageDisk)->url($event->filename)))
                ->icon('download')
                ->type('info')
        );
    }
}

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

637,827,751 9,703
laravel/framework

The Laravel Framework.

584,532,650 34,931
laravel/tinker

Powerful REPL for the Laravel framework.

493,838,477 7,443
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

408,553,772 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

391,429,217 4,660