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

Laravel Nova's Queued Export As CSV Action

Maintainers

👁 crynobone

Package info

github.com/nova-kit/nova-queued-export-as-csv

pkg:composer/nova-kit/nova-queued-export-as-csv

Statistics

Installs: 74 245

Dependents: 1

Suggesters: 0

Stars: 21

v2.3.0 2025-02-21 10:23 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

  • laravel/nova: <5.0.0|>=6.0.0

Replaces

None

MIT 8e12a4ee57bd682887c65faf7fdcbed115cb4ac2

  • Mior Muhammad Zaki <crynobone.woop@gmail.com>

This package is auto-updated.

Last update: 2026-06-20 01:29:39 UTC


README

👁 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')
 );
 }
}