Laravel nova - 使用动作允许多次下载

Pra*_*ahu 6 laravel laravel-nova

在 Laravel Nova 2.0 中

要在操作执行后启动文件下载,您可以使用 Action::download 方法。download 方法接受要下载的文件的 URL 作为其第一个参数,以及所需的文件名称作为其第二个参数:

return Action::download('https://example.com/invoice.pdf', 'Invoice.pdf');
Run Code Online (Sandbox Code Playgroud)

在 Action 句柄方法中

 public function handle(ActionFields $fields, Collection $models)
    {
        foreach ( $models as $model ) {
            return Action::download($model->document_link, $model->document_title);
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在这将在循环中下载最后一个,如何允许在循环中下载所有内容?

更新

一种选择是使用 Zipper 或其他东西来创建所有选定的可下载文件的 zip 文件,然后下载它,但如果我们可以允许下载队列,我会喜欢它。

Pet*_*leg 1

我不相信可以使用下载多个文件

return Action::download()
Run Code Online (Sandbox Code Playgroud)

解决方法可能是创建一个包含所有文件的压缩存档并展示此存档示例:

public function handle(ActionFields $fields, Collection $models)
{
    foreach ( $models as $model ) {
       $this->addTozip($model) // some function to build an archive
    }
    return Action::download('https://example.com/invoice.zip', 'Invoice.zip');
}
Run Code Online (Sandbox Code Playgroud)