Interact with exports

Asking the user for a filename

If you want your users to choose their own filename when exporting a resource, you can use the askForFilename() interaction.

/**
 * Get the actions available for the resource.
 *
 * @param  \Illuminate\Http\Request $request
 *
 * @return array
 */
public function actions(Request $request)
{
    return [
        (new DownloadExcel())->askForFilename()
    ];
}
1
2
3
4
5
6
7
8
9
10
11
12
13

The user will now be prompted with the question how he wants to name the file.

Laravel Nova Excel ask for filename

💡 If you want to have a custom label, you can simply pass that via the method: (new DownloadExcel())->askForFilename(__('Filename for your export'))

WARNING

When not specifying any default writer type, the user can control the file type by typing an extensions in the filename. E.g. users.csv will result into an Csv document. If the user doesn't specify any extension, it will default to .xlsx.

If you don't want the user to have this kind of control,make sure to use withWriterType().

Asking the user for the writer type

If you want your users to choose their own writer type when exporting a resource, you can use the askForWriterType() interaction.

/**
 * Get the actions available for the resource.
 *
 * @param  \Illuminate\Http\Request $request
 *
 * @return array
 */
public function actions(Request $request)
{
    return [
        (new DownloadExcel())->askForWriterType()
    ];
}
1
2
3
4
5
6
7
8
9
10
11
12
13

Laravel Excel Nova asking for writer type

💡 If you want to specify the options the user can choose yourself, you can pass them via the askForWriterType:

/**
 * Get the actions available for the resource.
 *
 * @param  \Illuminate\Http\Request $request
 *
 * @return array
 */
public function actions(Request $request)
{
    return [
        (new DownloadExcel)->askForWriterType([
            \Maatwebsite\Excel\Excel::CSV => __('Csv document'),
        ]),
    ];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

💡 If you want to have a custom label, you can simply pass that via the method: (new DownloadExcel())->askForWriterType(null, __('Filename for your export'))