Hej wszystkim długo ostatnio nie pisałam ale było to wynikiem wielu różnych czynników, o których nie warto tutaj wspominać 🙂
Ostatnio pojawiła się możliwość przeniesienia sklepu z Presty 1.6 do Magento2. Jako że ciekawym wyzwaniom zawsze stawiam czoła, ostro zabrałam się do pracy.
Mój skrypt importu ewoluował wraz z moją wiedzą o M2, która mimo iż jest wiąż skromna, to będzie się stale poszerzać.
Pierwsze skrypty oczywiście nie działały – bo jakże by inaczej mogłoby być!
Później pojawił się problem wydajnościowy a na końcu magento 2.1 postanowiło wgrywać tylko pierwsze 100 produktów z listy. Ot i już!
Ponieważ była to jakaś przypadłość wersji 2.1.7 uznałam, że skoro i tak „tworzę” od zera to zainstaluję nowszą wersję. Pomogło !
Nie będę się chwalić pierwszymi wersjami importera bowiem z tego miejsca, w którym jestem uważam je za coś okropnego, co nigdy nie powinno zostać uruchomione ale chciałabym się podzielić z Wami skryptem, który bazuje na magentowych plikach exportu csv. Jak znajdę chwilę postaram się opisać temat szerzej.
require_once __DIR__ . '/app/bootstrap.php';
class ImportExt implements \Magento\Framework\AppInterface
{
protected $objectManager;
public function __construct(
\Magento\Framework\ObjectManagerInterface $objectManager,
\Magento\Framework\App\State $state
)
{
$state->setAreaCode('adminhtml');
$this->objectManager = $objectManager;
}
public function launch()
{
$importModelFactory = $this->objectManager->get('Magento\ImportExport\Model\ImportFactory');
$filesystem = $this->objectManager->get('Magento\Framework\Filesystem');
$import = $importModelFactory->create();
$import->setData([
'validation_strategy' => 'validation-stop-on-errors',
'allowed_error_count' => 1,
'entity' => 'catalog_product'
]);
$sourceModel = \Magento\ImportExport\Model\Import\Adapter::findAdapterFor(
'produkty.csv',
$filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::ROOT),
$import->getData('_import_field_separator')
);
$isValid = $import->validateSource($sourceModel);
if ($import->getProcessedRowsCount() === 0 || !$isValid || $import->getErrorAggregator()->getErrorsCount()) {
var_dump($import->getErrorAggregator()->getAllErrors()); // wyrzuca błędy
exit;
}
$import->importSource();
die('Produkty zostały zaimportowane');
}
public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception)
{
return true;
}
}
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$app = $bootstrap->createApplication('ImportExt');
$bootstrap->run($app);
Jak dla mnie bomba ;)) !