PSWebServiceLibrary-Web服务-添加产品简单(没有组合)存在库存问题



我使用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(stock.bundle.js?1.7.6.3:7(的属性"split">

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

如果我删除它(通过phpMyAdmin(,那么一切都很好,产品将在库存中可见

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

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

PrestaShop版本:1.7.6.3:7PHP版本:7.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() ]);

问题在于我得到的结果([…](;$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(); 
}

我希望我已经解释好了,这对每个人都有帮助。。。因为网上的信息不多。

相关内容

  • 没有找到相关文章

最新更新