Laravel - Maatwebsite / Laravel-Excel без входного файла

Я реализовал Maatwebsite / Laravel-Excel с входным файлом, это отлично работает.

public function import(Request $request)
{
   $path = $request->file('file');
    
     if (!is_file($path))
     {
        dd("file excel missing");
     }
    
     Excel::import(new ProductsSerialsImport,request()->file('file')); 
    
     return redirect()->back()->with('success', 'File updated!');
    
}

Route::post('products_serials/import', 'ProductsSerialsController@import')->name('products_serials.import');

Я что-то сделал из этого, но не понимаю, где я могу получить файл Excel, не передавая входной файл.

public function import(Request $request)
{

    $path = "storage/excel/file.xlsx";

    if(!File::exists($path)) {
        dd("missing excel file!");
    }

    Excel::import(new ProductsSerialsImport, $path);

    return redirect()->back()->with('success', 'File updated!');
}

Как я могу обновить файл excel из route = ›'products_serials / import', пропуская загружаемый файл через входной файл?

Заранее спасибо!


person mustaine    schedule 04.05.2021    source источник
comment
Итак, вы хотите передать запрос () - ›файл ('файл') своему классу импорта?   -  person Localhousee    schedule 04.05.2021


Ответы (1)


Есть конструктор. из docs это будет так

ProductsSerialImport.php

class ProductsSerialImport implements ToCollection {
    private $file;

    public function __construct($file) 
    {
        $this->file = $file;
    }
    
    public function collection(Collection $row)
    {
        foreach($row as $r) {
            Model::create(['name', $this->file]); // Just for example
        }
    }
}

YourController.php

Excel::import(new ProductsSerialsImport(request()->file('file')));
person Localhousee    schedule 04.05.2021