Magento产品导入

时间:2018-03-05 07:14:00

标签: php magento magento2

我想以编程方式将产品导入我的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 Magento\Catalog\Model\Product\Interceptor 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 Magento\Catalog\Model\Product\Interceptor 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): Magento\Framework\App\ErrorHandler->handler(4096, 'Object of class...', '/Applications/M...', 241, Array)

我不知道自己做错了什么。我第一次让代码运行时它正在运行。

更新

当我删除try catch部分并调用

$this->productRepository->save($product);

我收到1个例外的错误:

Exception #0 (Magento\Framework\Exception\NoSuchEntityException): Product with SKU "my-sku2" does not exist

当然它不存在,因为我想创建一个新产品。那么我该如何创建新产品呢?

2 个答案:

答案 0 :(得分:1)

您正在尝试将$ product对象转换为上一次try-catch的回显中的字符串。我相信这是你的Exception消息所指向的。尝试删除echo并查看LocalizedException提供的内容。

如果要记录$ product数据,则应考虑使用$product->debug();返回数据数组而不进行所有对象递归。该函数可用于任何扩展\Magento\Framework\DataObject的对象。

https://github.com/magento/magento2/blob/2.2/lib/internal/Magento/Framework/DataObject.php#L468

<强>更新

除了上述内容,对于您在删除try-catch后遇到的NoSuchEntityException;我尝试了您的代码并在管理员中收到了以下错误&#34;请输入小于或等于99999999的值。&#34;数量,可能与问题有关。

如果你从前端调用create并且你的Magento不是单存储模式,那么商店ID也可能是模糊的。在这种情况下,请设置$product->setStoreId(0);以确保其在管理中保存。

答案 1 :(得分:0)

如果您使用productFactory创建产品型号,为什么不只是保存它?

$product->save();