Tutaj znalazłem rozwiązania umożliwiające programowe utworzenie produktu za pomocą niestandardowego pliku php, tj test.php
.
<?php
use Magento\Framework\App\Bootstrap;
include('app/bootstrap.php');
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$_product = $objectManager->create('Magento\Catalog\Model\Product');
$_product->setName('Test Product');
$_product->setTypeId('simple');
$_product->setAttributeSetId(4);
$_product->setSku('test-SKU');
$_product->setWebsiteIds(array(1));
$_product->setVisibility(4);
$_product->setPrice(array(1));
$_product->setImage('/testimg/test.jpg');
$_product->setSmallImage('/testimg/test.jpg');
$_product->setThumbnail('/testimg/test.jpg');
$_product->setStockData(array(
'use_config_manage_stock' => 0, //'Use config settings' checkbox
'manage_stock' => 1, //manage stock
'min_sale_qty' => 1, //Minimum Qty Allowed in Shopping Cart
'max_sale_qty' => 2, //Maximum Qty Allowed in Shopping Cart
'is_in_stock' => 1, //Stock Availability
'qty' => 100 //qty
)
);
$_product->save();
?>
Po pierwsze, w swoim konstruktorze będziemy chcieli zawierać trzy klasy dla iniekcji zależność:
Magento\Catalog\Api\Data\ProductInterfaceFactory
,Magento\Catalog\Api\ProductRepositoryInterface
iMagento\CatalogInventory\Api\StockRegistryInterface
. Pierwszy jest generowany, więc nie przejmuj się, jeśli pojawi się jako nieistniejący w twoim IDE.Stamtąd, gdzie chcesz utworzyć produkt, musisz użyć fabryki, aby go utworzyć i ustawić dane, a także repozytorium, aby je zapisać:
Prawdopodobnie zechcesz dodać trochę zapasów, co możesz zrobić w następujący sposób:
Jeśli uruchamiasz to w skrypcie (w tym w skryptach instalacyjnych / aktualizacyjnych), będziesz także musiał emulować ten obszar, ponieważ tego rodzaju rzeczy wymagają sesji z jakiegoś szalonego powodu.
Aby to zrobić, przeciągnij
\Magento\Framework\App\State
przez konstruktor, a następnie użyj tego kodu:źródło
odniesienie do kodu :: http://www.onlinecode.org/create-a-simple-product-programmatically-in-magento-2/
źródło
źródło