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.5.1:导入产品时出现“图像不存在”

Magento 1.9 magmi 导入产品图像后,当该产品从管理员保存时,它会删除图像

Magento Dataflow 产品导入不导入 super_attribute 字段

架构丰富的代码片段也应该用于产品列表吗?

在 magento 产品导入数据流配置文件中显示 SKU