如何在导出excel laravel中解决“函数App \ Exports \ ItemsExport :: __ construct()的参数太少,已传递0”的问题?

时间:2018-07-27 09:17:44

标签: excel laravel export export-to-excel laravel-5.6

我将导出类设置为可在App / Exports中导出:

<?php
namespace App\Exports;
use App\Repositories\ItemRepository;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;
class ItemsExport implements FromCollection
{
    use Exportable;
    protected $itemRepository;
    public function __construct(ItemRepository $itemRepository)
    {
        $this->itemRepository = $itemRepository;
    }
    public function collection()
    {
        return $this->itemRepository->getItem();
    }
}

我从控制器这样打来电话:

return (new ItemsExport)->download('items.xlsx');

存在这样的错误:

too few arguments to function App\Exports\ItemsExport::__construct(), 0 passed

如何解决此错误?

我从本教程中获得了导出excel:https://laravel-excel.maatwebsite.nl/docs/3.0/export/basics

1 个答案:

答案 0 :(得分:1)

为了使用Laravel的依赖注入,您需要通过应用程序容器构造新实例:

return app()->make(ItemsExport::class)->download('items.xlsx');

这假设应用程序知道如何构造ItemRepository

或者,如果这是在控制器操作中,则可以将其注入,例如

public function controllerAction(ItemsExport $exporter) {
     return $exporter->download('items.xlsx');
}