Sowas ist ja immer sehr individuell..
Aber als Basis:
Installieren: https://packagist.org/packages/league/csv
PHP-Code:
<?php
// NICHT GETESTET!!!
use League\Csv\Reader;
use League\Csv\Statement;
use Contao\Controller;
use Contao\System;
use ProductModel;
class ProductImport extends Controller {
public function importProducts () {
$productArr = $this->getCsvData();
if (!$productArr) {
return;
}
foreach($productArr as $row) {
$arrColumns = ["id=?"]; // or Artikelnummer
$arrValues = [$row['id']];
$arrOptions = [];
$productObj = ProductModel::findby($arrColumns, $arrValues, $arrOptions);
if ($productObj == NULL ) {
$productObj = new ProductModel();
$productObj->published = "";
}
$productObj->name = $row['name'];
$productObj->description = $row['description'];
$productObj->price = $row['price'];
$productObj->save();
}
}
public function getCsvData () {
$container = System::getContainer();
$stream = fopen($container->getParameter('kernel.project_dir')."pfad/zum/product.csv", 'r');
$csv = Reader::createFromStream($stream);
$csv->setDelimiter(';');
$csv->setEnclosure('"');
$stmt = (new Statement())
->offset(0)
->limit(999999)
;
return $stmt->process($csv);
}
}
?>
Lesezeichen