Laravel 10 – 12
PHP 8.1+
Low commit activity in last 18 months
No release in over a year
Laravel Nova's Queued Export As CSV Action
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

guzzlehttp/guzzle
^7.2
laravel/nova
^5.2
laravel/nova-devtool
^1.6
^8.20|^9.0|^10.0
orchestra/pest-plugin-testbench
^2.0|^3.0
phpstan/phpstan
^2.1

Runtime

^10.48.23|^11.35|^12.0
symfony/polyfill-php83
^1.31
 Project Readme

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