PSWebServiceLibrary-Webservice-添加产品简单(无组合)有库存问题

问题描述 投票:0回答:1

我使用PSWebServiceLibrary与Prestashop进行“对话”。如果我使用以下简单代码添加产品:

xmlResponse = $webService->get(['url' => PS_SHOP_PATH."/api/products?schema=blank"]);
$fieldsXML = $xmlResponse->product[0];
$fieldsXML->state = "1";
$fieldsXML->name = "test";
$fieldsXML->price = "10.00"; 
try {
    $addResponse = $webService->add([ 'resource' => "products", 'postXml' => $xmlResponse->asXML() ]);
    $fieldsXML = $addResponse->product[0];
    echo 'Enjoy-> Your product Id is: '.$fieldsXML->id;
} 
catch (PrestaShopWebserviceException $e) { 
    echo "No good -> ".$e->getMessage(); 
}

我的目录中有我的新产品->产品...但是我的目录中没有新产品->库存。当我转到商品目录->股票时,控制台显示如下错误:TypeError:无法读取null的属性“ split”(stock.bundle.js?1.7.6.3:7)

[我已经看到PS在Dbase中创建了与新产品相关联的表product_attribute中的一行(而不是像product_attributeproduct_attribute_combinationproduct_attribute_image,ecc这样的表中没有该行)

如果我将其删除(通过phpMyAdmin),则可以正常工作,并且该产品将在库存中可见

如果我通过仪表板创建产品,则一切正常,如果我检查表product_attribute,则该产品不正确

我已经搜索了很多解决方案,例如在插入中更改属性值,第二次更改它们……什么都没有。

PrestaShop版本:1.7.6.3:7PHP版本:7.0

php web-services prestashop
1个回答
0
投票

我已经解决了...,我认为这是Prestashop或PSWebServiceLibrary的错误使用我的原始代码,我得到产品空白shema的所有属性

$xmlResponse = $webService->get(['url' => PS_SHOP_PATH."/api/products?schema=blank"]);
$fieldsXML = $xmlResponse->product[0];

我仅编辑一些属性

$fieldsXML->state = "1";
$fieldsXML->name = "test";
$fieldsXML->price = "10.00"; 
$fieldsXML->advanced_stock_management=true;
$fieldsXML->low_stock_alert=false;
$fieldsXML->minimal_quantity = "1"; 
$fieldsXML->available_for_order = true;
$fieldsXML->active = true; 

我将新的xml(已编辑的属性和收到的其他属性)发送到Prestashop。

$webService->add([ 'resource' => "products", 'postXml' => $xmlResponse->asXML() ]);

问题是我从get([...])得到的结果;$ fieldsXML内的标签的格式类似(例如),而不是因此,当我编辑属性时,格式将是“正确的”(1),其余的将保持不变...这在插入产品时会出现问题,因为Prestashop似乎没有“完全接受”它。

要解决该问题,我必须将每个属性编辑为空,然后编辑所需的属性。这是我的工作代码:

$xmlResponse = $webService->get(['url' => PS_SHOP_PATH."/api/products?schema=blank"]);
$fieldsXML = $xmlResponse->product[0];
foreach ($fieldsXML as $nodeKey => $node){
    $fieldsXML->$nodeKey = "";
}
$fieldsXML->state = "1";
$fieldsXML->name = "test";
$fieldsXML->price = "10.00"; 
$fieldsXML->advanced_stock_management=true;
$fieldsXML->low_stock_alert=false;
$fieldsXML->minimal_quantity = "1"; 
$fieldsXML->available_for_order = true;
$fieldsXML->active = true; 
try {
    $addResponse = $webService->add([ 'resource' => "products", 'postXml' => $xmlResponse->asXML() ]);
    $fieldsXML = $addResponse->product[0];
    echo 'Enjoy-> Your product Id is: '.$fieldsXML->id;
} 
catch (PrestaShopWebserviceException $e) { 
    echo "No good -> ".$e->getMessage(); 
}

我希望我已经解释清楚,并且对每个人都有帮助...因为网上没有太多信息。

© www.soinside.com 2019 - 2024. All rights reserved.