You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改Laravel Maatwebsite\Excel默认导出模板为FromView而非FromCollection

如何修改Maatwebsite\Excel的make:export命令默认实现FromView接口

当然可以修改,不用动扩展核心代码,两种方法就能搞定:

方法一:修改扩展的Stub模板文件

make:export命令是靠stub模板生成文件的,直接改对应模板就行:

  1. 找到扩展的stub文件:vendor/maatwebsite/excel/src/Console/stubs/export.stub
  2. 打开文件,把默认的FromCollection相关代码替换成FromView的结构:
    原模板大概是这样:
    <?php
    
    namespace {{ namespace }};
    
    use Maatwebsite\Excel\Concerns\FromCollection;
    
    class {{ class }} implements FromCollection
    {
        /**
        * @return \Illuminate\Support\Collection
        */
        public function collection()
        {
            //
        }
    }
    
    修改后:
    <?php
    
    namespace {{ namespace }};
    
    use Illuminate\Contracts\View\View;
    use Maatwebsite\Excel\Concerns\FromView;
    
    class {{ class }} implements FromView
    {
        /**
        * @return View
        */
        public function view(): View
        {
            return view('path.to.your.view', [
                // 这里放要传递给视图的数据
            ]);
        }
    }
    
  3. 保存之后,再执行php artisan make:export,生成的文件就默认实现FromView接口了。

提醒:这种方法的小缺点是,扩展更新时stub文件会被覆盖,到时候得重新改一遍。

方法二:自定义Artisan命令

不想碰vendor目录的话,自己写个自定义命令替代默认的make:export:

  1. 先生成自定义命令:php artisan make:command MakeExportFromView
  2. 打开生成的命令文件,参考原ExportMakeCommand的逻辑,把stub文件路径改成你自己的模板路径,比如放在resources/stubs目录下:
    protected function getStub()
    {
        return resource_path('stubs/export-from-view.stub');
    }
    
  3. 把刚才修改好的FromView模板内容放到resources/stubs/export-from-view.stub里
  4. 注册这个命令后,就能用php artisan make:export-from-view生成默认实现FromView的导出文件了;要是想直接替换原命令,注册时把命令名改成make:export就行。

内容的提问来源于stack exchange,提问作者hadilnc01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:42:14