我在 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 的正确方法是什么?
由于您不使用
$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
。
确保通过身份验证保护新的导出路由。