2016-04-27 1 views
0

Привет, я хочу удаленно обновить все «атрибуты», связанные с продуктом, используя веб-службу prestashop. Я пытаюсь обновить свои категории в течение нескольких дней безуспешно. Я использую prestashop_1.6.1.5. Следуя doc вы можете получить XML продукт, как этоКак обновить категории продуктов с помощью веб-сервиса prestashop?

$xml = $this->webService->get(array('url' => 'http://prestashop.localhost/api/products/2')); 

var_dump($xml); 

$resources = $xml->children()->children(); 

Тогда, если вы

$resources->reference = "NEW REFERENCE"; 

и вы можете изменить ссылку, например.

можно просмотреть его категорию по

$resources->associations->categories->categories 

вы получите массив категории идентификаторов, которые связаны с продуктом. Но если вы делаете:

$resources->associations->categories->categories[2] = 8 

Вы не обновит третью категорию, связанную с продуктом до 8. Это будет оставаться как 0. Я также попытался Ассинг ему строку. Я попытался отключить узел всех категорий, создать свой собственный узел с тем же форматом, который он использует, и после этого повторить его снова. Я попытался также создать SimpleXMlElement и добавить его с помощью addChild() для каждого идентификатора, который я хочу изменить. Но ничего не получилось.

Кто-нибудь знает, как обновлять категории?

У меня также есть другой вопрос, в чем разница между этими идентификаторами категорий и значением default_category_id, которое появляется в продукте xml? Если вы видите preashop DDBB, default_category_id не отображается в промежуточной таблице. Я имею в виду, если default_category_id равно 9, другие идентификаторы - 2,3,4 и 7 в примерах продуктов, которые вы используете, когда начинаете использовать prestashop.

заранее спасибо

ответ

3

Категории могут быть обновлены, как это:

$id_product = 102; 
$new_product_categories = array(29,30,31); // List of categories to be linked to product 

$xml = $this->webservice->get(array('resource' => 'products', 'id' => $id_product)); 

$product = $xml->children()->children(); 

// Unset fields that may not be updated 
unset($product->manufacturer_name); 
unset($product->quantity); 

// Remove current categories 
unset($product->associations->categories); 

// Create new categories 
$categories = $product->associations->addChild('categories'); 

foreach ($new_product_categories as $id_category) { 
    $category = $categories->addChild('category'); 
    $category->addChild('id', $id_category); 
} 

$xml_response = $this->webservice->edit(array('resource' => 'products', 'id' => $id_product, 'putXml' => $xml->asXML())); 
+0

It WORS !!! Большое спасибо, ты спас меня! –

 Смежные вопросы

  • Нет связанных вопросов^_^