Magento 2 i import produktów

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 ;)) !