Прикрутил расширение для импорта/экспорта excel, чутка подшаманил и заработало, но все товары без картинок, а это не есть гут, когда много товаров. Да и вообще не комильфо...
Расширение поставил uranum/yii2-excel-exchange
Экшен:
public function actionImportExcel()
{
$inputFile = 'uploads/export.xlsx';
try{
$inputFileType = \PHPExcel_IOFactory::identify($inputFile);
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFile);
} catch (\DomainException $e) {
die('Error');
}
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for($row=1; $row <= $highestRow; $row++)
{
$rowData = $sheet->rangeToArray('A'.$row.':'.$highestColumn.$row,NULL,TRUE,FALSE);
if($row==1)
{
continue;
}
$product = new Product();
$product->brand_id = $rowData[0][0];
$product->category_id = $rowData[0][1];
$product->code = $rowData[0][2];
$product->name = $rowData[0][3];
$product->description = $rowData[0][4];
$product->price_new = $rowData[0][5];
$product->price_min = $rowData[0][6];
$product->price_roll = $rowData[0][7];
$product->meta = new Meta($rowData[0][8],
$rowData[0][9],
$rowData[0][10]
);
$product->status = $rowData[0][11];
$product->quantity = $rowData[0][12];
$product->min_long = $rowData[0][13];
$product->roll_long = $rowData[0][14];
$product->created_at = time();
$product->save();
print_r($product->getErrors());
}
return $this->render('index');
}
Как видно из кода мета теги подгружаются через отдельную модель. Пробовал таким Макаром с фотами, но... Файлам же нужна форма с enctype=multipart\formdata, а как ее из файла импорта получить что-то не пойму..
Может быть есть расширения получше?
Да и сам код понять хотелось бы