Magento产品导入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magento产品导入相关的知识,希望对你有一定的参考价值。
我想以编程方式将产品导入我的magento。不幸的是,我得到了一个错误,这个错误并没有告诉我很多,也许你们有些人有想法。这是我的php代码:
echo '<pre>';
echo 'Create Product Model';
echo '</pre>';
$product = $this->productFactory->create();
$product->setSku('my-sku2');
$product->setName('Sample Simple Product');
$product->setAttributeSetId(4);
$product->setStatus(1);
$product->setWeight(10);
$product->setVisibility(4);
$product->setTaxClassId(0);
$product->setTypeId('simple');
$product->setPrice(100);
$product->setStockData(
array(
'use_config_manage_stock' => 0,
'manage_stock' => 1,
'is_in_stock' => 1,
'qty' => 999999999
)
);
try {
$this->productRepository->save($product);
echo 'PRODUCT SAVED ';
return 'Saved';
} catch (CouldNotSaveException $e) {
echo 'ERROR COULD';
print_r($e);
} catch (InputException $e) {
echo 'ERROR INPUT';
print_r($e);
} catch (StateException $e) {
echo 'ERROR STATE';
print_r($e);
} catch (LocalizedException $e) {
echo 'ERROR LocalizedException';
echo 'Something failed for product import ' . $product . PHP_EOL;
print_r($e);
}
我得到的错误是
1 exception(s):
Exception #0 (Exception): Recoverable Error: Object of class MagentoCatalogModelProductInterceptor could not be converted to string in /Applications/MAMP/htdocs/magento2/app/code/Inchoo/Helloworld/Block/Helloworld.php on line 241
Exception #0 (Exception): Recoverable Error: Object of class MagentoCatalogModelProductInterceptor could not be converted to string in /Applications/MAMP/htdocs/magento2/app/code/Inchoo/Helloworld/Block/Helloworld.php on line 241
#0 /Applications/MAMP/htdocs/magento2/app/code/Inchoo/Helloworld/Block/Helloworld.php(241): MagentoFrameworkAppErrorHandler->handler(4096, 'Object of class...', '/Applications/M...', 241, Array)
我不知道我做错了什么。我第一次让代码运行它是有效的。
UPDATE
当我删除try catch部分并只是调用
$this->productRepository->save($product);
我收到1个异常的错误:
Exception #0 (MagentoFrameworkExceptionNoSuchEntityException): Product with SKU "my-sku2" does not exist
当然它不存在,因为我想创建一个新产品。那么我该如何创造新产品呢?
您正在尝试将$ product对象转换为最后一个try-catch的echo中的字符串。我相信这是你的Exception消息所指向的。尝试删除echo并查看LocalizedException提供的内容。
如果要记录$ product数据,则应考虑使用$product->debug();
,它返回一个没有所有对象递归的数据数组。该函数可用于任何扩展MagentoFrameworkDataObject
的对象。
https://github.com/magento/magento2/blob/2.2/lib/internal/Magento/Framework/DataObject.php#L468
UPDATE
除此之外,对于你去除了try-catch后经历的NoSuchEntityException
;我尝试了您的代码并在管理员中收到以下错误“请输入小于或等于99999999的值”。数量上,可能与问题有关。
如果您从前端调用create并且您的Magento不是单存储模式,那么商店ID也可能是模糊的。在这种情况下,设置$product->setStoreId(0);
以确保它像管理员一样保存。
如果您使用productFactory创建产品模型,为什么不只是保存它?
$product->save();
以上是关于Magento产品导入的主要内容,如果未能解决你的问题,请参考以下文章
如何在Magento(麦进斗)导入CSV文件中的产品价格的变化?
Magento 1.9 magmi 导入产品图像后,当该产品从管理员保存时,它会删除图像