Я решил ... и думаю, что это ошибка 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 ([...] ); Тег внутри $ fields XML имеет формат, например (например), а не Так, когда я редактирую атрибут, формат будет «правильным» (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();
}
Я надеюсь, что я хорошо объяснил и что это полезно для всех ... потому что в Интернете не так много информации.