Laravel Dcat 自定义工具栏实现导出excel功能的问题

点击导出按钮后,一直有一个进度条在加载,不知道是什么问题

导出数据


class HomeController extends Controller
{
    public function exportPhoneTemplate(): BinaryFileResponse
    {
        return Excel::download(new ImportPhoneTempExport(), '会员导入模板.xlsx');
    }
}

自定义按钮

 $grid->tools(function (Grid\Tools $tools) {
      $tools->append('<a class="btn btn-primary fa fa-download" href="' . admin_url('/export-phone-template') . '">下载模板</a>');
 });

路由

$router->get('/export-phone-template', 'HomeController@exportPhoneTemplate');

数据模板

<?php

namespace App\Exports;

use App\Helpers\StrHelper;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;

class ImportPhoneTempExport implements FromCollection
{
    public function collection(): Collection
    {
        return collect([
            [StrHelper::generateRandomPhoneNumber()],
            [StrHelper::generateRandomPhoneNumber()],
        ]);
    }
}
DaiChongWeb
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

换了一种实现方式:


 $grid->tools(function (Grid\Tools $tools) {
          $tools->append(new ExportPhoneTemplateButton());
 });

新增一个ExportPhoneTemplateButton类
use Dcat\Admin\Grid\Tools\AbstractTool;

class ExportPhoneTemplateButton extends AbstractTool
{
    public function render(): string
    {
        $url = admin_url('/tasks/download-phone-template');

        return <<<HTML
        <a class="btn btn-primary" id="export-phone-template" href="javascript:void(0);">
            <i class="feather icon-download"></i> 导出模板
        </a>
        <iframe id="download-iframe" style="display:none;"></iframe>
        <script>
            document.getElementById('export-phone-template').addEventListener('click', function() {
                // 显示加载动画
                Dcat.loading();

                // 创建一个隐藏的 iframe 来下载文件
                var iframe = document.getElementById('download-iframe');
                iframe.src = '$url';
                Dcat.loading(false);
            });
        </script>
HTML;
    }
}
1周前 评论
讨论数量: 1

换了一种实现方式:


 $grid->tools(function (Grid\Tools $tools) {
          $tools->append(new ExportPhoneTemplateButton());
 });

新增一个ExportPhoneTemplateButton类
use Dcat\Admin\Grid\Tools\AbstractTool;

class ExportPhoneTemplateButton extends AbstractTool
{
    public function render(): string
    {
        $url = admin_url('/tasks/download-phone-template');

        return <<<HTML
        <a class="btn btn-primary" id="export-phone-template" href="javascript:void(0);">
            <i class="feather icon-download"></i> 导出模板
        </a>
        <iframe id="download-iframe" style="display:none;"></iframe>
        <script>
            document.getElementById('export-phone-template').addEventListener('click', function() {
                // 显示加载动画
                Dcat.loading();

                // 创建一个隐藏的 iframe 来下载文件
                var iframe = document.getElementById('download-iframe');
                iframe.src = '$url';
                Dcat.loading(false);
            });
        </script>
HTML;
    }
}
1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!