Laravel Nova - 使用操作下载生成的文件

问题描述 投票:0回答:1

我在 Nova Action 中有以下 handle() 方法:

public function handle(ActionFields $fields, Collection $models)
{
    $file = Excel::store(new \App\Exports\DownloadRiskConsequenceTemplate, 'risk_consequence_template.xlsx', 'public');
    $download = Action::download(Storage::url($file), 'risk_consequence_template.xlsx');
    return Action::message('Download started..');
}

我已经尝试了相当多的迭代来下载它,但我似乎无法让它工作。我尝试过 Storage::url、storage_path()、url(),尝试将文件放入 /public,但都没有触发下载,并且出现“失败 - 无文件”错误。

处理从 Nova Action 下载 Excel 的正确方法是什么?

laravel laravel-nova
1个回答
0
投票

由于您不使用

$fields
$models
,最简单的解决方案是让操作转发到真正的控制器:

class ExportMyData extends Action
{
    public function handle(ActionFields $fields, Collection $models)
    {
        return Action::download(route('mynova.export.mydata'), 'myfile.ods');
    }
}

并在

Excel::download()
控制器操作中调用
mynova.export.mydata
。 确保通过身份验证保护新的导出路由。

© www.soinside.com 2019 - 2024. All rights reserved.