Hier habe ich die Lösungen gefunden, um ein Produkt programmatisch über eine benutzerdefinierte PHP-Datei zu erstellen, dh 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();
?>
Zuerst in Ihrem Konstruktor Sie werden drei Klassen für Dependency Injection enthalten sein sollen:
Magento\Catalog\Api\Data\ProductInterfaceFactory
,Magento\Catalog\Api\ProductRepositoryInterface
undMagento\CatalogInventory\Api\StockRegistryInterface
. Der erste wird generiert, machen Sie sich also keine Sorgen, wenn sich herausstellt, dass er in Ihrer IDE nicht vorhanden ist.Von dort, wo Sie das Produkt erstellen möchten, müssen Sie die Factory verwenden, um es zu erstellen und die Daten festzulegen, und das Repository, um es zu speichern:
Wahrscheinlich möchten Sie dann eine Aktie hinzufügen, was Sie folgendermaßen tun können:
Wenn Sie dies in einem Skript ausführen (einschließlich Setup- / Upgrade-Skripten), müssen Sie auch den Bereich emulieren, da dies aus verrückten Gründen Sitzungen erfordert.
Ziehen Sie dazu
\Magento\Framework\App\State
den Konstruktor durch, und verwenden Sie dann diesen Code:quelle
Code-Referenz: http://www.onlinecode.org/create-a-simple-product-programmatically-in-magento-2/
quelle
quelle