[英]How to create a simple product programmatically using csv data in magento2
I am trying to create a simple product programmatically using csv data. 我正在尝试使用csv数据以编程方式创建一个简单的产品。 But my product doest not insert in db and admin panel???
但是我的产品没有插入数据库和管理面板中??? Any suggestion pls
任何建议
Sku,Name,AttributeSetId,CategoryId,Description,Status,TypeId,Price,WebsiteIds,Visibility,UrlKey //title for the csv data
nailPolish,nailpolish,9,2,verybrightproduct,1,simple,200,base,4,nailpolish//csv data
nailRemover,nailremover,9,2,niceproduct,1,simple,200,base,4,nailremover//csv data
<?php
use Magento\Framework\App\Bootstrap;// add bootstrap
include("app/bootstrap.php");
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
function readOptions() //to read csv file
{
$options = array();
$file = 'csv/csvSimpleproduct.csv';
$handle = fopen($file, "r");
$headers = false;
if (empty($handle) === false) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if (!$headers)
$headers[] = $data;
else
$options[] = $data;
}
fclose($handle);
}
return $options;
}
$importProduct = readOptions();
echo '<pre>';
print_r($importProduct);//printing array values
echo '</pre>';
foreach ($importProduct as $importProducts) { //to get single array values
$product = $objectManager->create('\Magento\Catalog\Model\Product');//creating object manager
$product->setSku($importProducts[0]);//to set sku values
$product->setName($importProducts[1]);// to set name of the product
$product->setAttributeSetId($importProducts[2]); //Default attribute set for products
$product->setCategories($importProducts[3]);//
$product->setDescription($importProducts[4]);//to give descriptions
$product->setStatus($importProducts[5]);
$product->setProductType($importProducts[6]);
$product->setPrice($importProducts[7]);// to give price of an product
$product->setWebsiteIds(array(1));//set main website view
$product->setVisibility($importProducts[9]);
$product->setUrlKey($importProducts[10]);//to set url to the product
}
my csv file is: 我的csv文件是:
Sku,Name,AttributeSetId,CategoryId,Description,Status,TypeId,Price,WebsiteIds,Visibility,UrlKey
nailPolish,nailpolish,9,2,verybrightproduct,1,simple,200,base,4,nailpolish
nailRemover,nailremover,9,2,niceproduct,1,simple,200,base,4,nailremover
Maybe something else is wrong, but you need to save your product by product repository 也许还有其他问题,但是您需要按产品存储库保存产品
/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
$product = $productRepository->save($product);
for now, you do not save product at all 现在,您根本不保存产品
also, it's not a best practice to use object manager directly, use product factory for creating new objects 另外,直接使用对象管理器,使用产品工厂来创建新对象也不是最佳实践
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.