修改Laravel Maatwebsite\Excel默认导出模板为FromView而非FromCollection
如何修改Maatwebsite\Excel的
make:export命令默认实现FromView接口 当然可以修改,不用动扩展核心代码,两种方法就能搞定:
方法一:修改扩展的Stub模板文件
make:export命令是靠stub模板生成文件的,直接改对应模板就行:
- 找到扩展的stub文件:
vendor/maatwebsite/excel/src/Console/stubs/export.stub - 打开文件,把默认的
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', [ // 这里放要传递给视图的数据 ]); } } - 保存之后,再执行
php artisan make:export,生成的文件就默认实现FromView接口了。
提醒:这种方法的小缺点是,扩展更新时stub文件会被覆盖,到时候得重新改一遍。
方法二:自定义Artisan命令
不想碰vendor目录的话,自己写个自定义命令替代默认的make:export:
- 先生成自定义命令:
php artisan make:command MakeExportFromView - 打开生成的命令文件,参考原
ExportMakeCommand的逻辑,把stub文件路径改成你自己的模板路径,比如放在resources/stubs目录下:protected function getStub() { return resource_path('stubs/export-from-view.stub'); } - 把刚才修改好的
FromView模板内容放到resources/stubs/export-from-view.stub里 - 注册这个命令后,就能用
php artisan make:export-from-view生成默认实现FromView的导出文件了;要是想直接替换原命令,注册时把命令名改成make:export就行。
内容的提问来源于stack exchange,提问作者hadilnc01
相关产品推荐
相关产品推荐

