Ici, j'ai trouvé les solutions pour créer un produit par programme via un fichier php personnalisé, c'est-à-dire 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();
?>
Tout d' abord, dans votre constructeur , vous aurez envie d'inclure trois classes pour l' injection de dépendance:
Magento\Catalog\Api\Data\ProductInterfaceFactory
,Magento\Catalog\Api\ProductRepositoryInterface
etMagento\CatalogInventory\Api\StockRegistryInterface
. Le premier est généré, alors ne vous inquiétez pas trop s'il apparaît comme n'existant pas dans votre IDE.À partir de là, où vous souhaitez créer le produit, vous devrez utiliser Factory pour le créer et définir les données, et le référentiel pour l'enregistrer:
Vous voudrez probablement ensuite ajouter du stock, ce que vous pouvez faire comme ceci:
Si vous exécutez cela dans un script (y compris les scripts de configuration / mise à niveau), vous devrez également émuler la zone car ce genre de chose nécessite des sessions pour une raison folle.
Pour ce faire, passez
\Magento\Framework\App\State
par le constructeur, puis utilisez ce code:la source
référence de code :: http://www.onlinecode.org/create-a-simple-product-programmatically-in-magento-2/
la source
la source