2013-02-09 3 views
2

Я читал, я пытаюсь, я ищу информацию о том, как добавлять/обновлять комбинации с помощью webservice, в prest 1.5.3, но все же я не знаю, как это сделать.Webservice Добавить/Обновить комбинации Prestashop

Может кто-нибудь мне помочь?

+0

'Я прочитал, я try' - отлично, не могли бы вы показать нам [', что у вас есть tried'] (http://mattgemmell.com/2008/12/08/what-have-you-try /) до сих пор? Таким образом, мы можем увидеть, что не так с вашим кодом, и предложить вам способы исправить и улучшить его. –

+1

Я нашел эту ссылку http://www.prestashop.com/forums/topic/198631-two-bugs-15117-and-1520-in-webservice-product-creation-and-update/, но без комбинаций.Теперь я думаю, что я использую продукт add, я устанавливаю отключенный продукт, а затем, когда я обновляю продукт, я устанавливаю комбинации. Но я не знаю, как это сделать. Я пытался с $ resources -> ассоциациями -> комбинациями, но все, что я пишу, было неправильным. Я должен сказать, что мне не нравится xml, всегда у меня проблема с этим. Это мое худшее. Я хочу добавить и обновить. Но я не нашел даже примера с комбинациями редактирования. – chiken

+0

проблема заключается в том, чтобы добавить 2 значения в узел product_option_values ​​... кто-нибудь решил? –

ответ

1

Назначение комбинаций продуктов через Webservice - это многоступенчатая операция (в отличие от импорта CSV).

  • данный продукт с id_product
  • добавить product_options (BO имена атрибутов)
  • добавить product_option_values ​​(BO Значения атрибутов) в product_options
  • добавить комбинации при задании id_product

Начало инициализации PrestaShopWebservice с DEBUG = true:

$api = new PrestaShopWebservice($psShopUrl, $psAuthKey, $psDebug); 

Вместо того, чтобы строить XML с нуля получить шаблон для ресурса вам нужно, как это:

$sxml = $api->get(array('url' => $psShopUrl.'api/'.$resource.'?schema=blank')); 

Ответом является SimpleXMLElement, который является легче манипулировать, чем DOM.

NB: Ответ содержит все узлы оболочки и вы должны послать тот же назад в запросе т.е. PSWebServiceLibrary будет не воссоздать их для вас.

<?xml version="1.0" encoding="UTF-8"?> 
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> 
<combination> 
... 
</combination> 
</prestashop> 

Нетерминал манипуляция пример:

$schema = $api->get(array('url' => $psShopUrl.'api/product_options?schema=blank')); 
$data = $schema->children()->children(); 
$data->is_color_group = false; 
$data->group_type = $group_type; // radio, select 
$data->name->language[0] = 'attribute private name'; 
$data->public_name->language[0] = 'attribute public name'; 
$xml = $schema->asXML(); // all of it! 
$ret = $api->add(array('resource' => 'product_options', 'postXml' => $xml)); 
$id_attribute_group = (int)$ret->children()->children()->id; // save for next step 

Затем получить product_option_values схему, набор данных и id_attribute_group из предыдущего шага. И так далее.

Обновление же, за исключением вы get ресурс по ид и затем edit:

$sxml = $api->get(array('resource' => $resource, 'id' => $id)); 
... 
$ret = $api->edit(array('resource' => $resource, 'id' => $id, 'putXml' => $xml)); 

Что касается добавления нескольких ID значения в product_option_values узла в combinations ресурса вы можете использовать array_push shortcut []:

$data->associations->product_option_values->product_option_values[]->id = 123; 
$data->associations->product_option_values->product_option_values[]->id = 456; 
0

Это работа для меня:

$webService = new PrestaShopWebservice($url, $api_key, FALSE); 
$xml = $webService->get(array('url' => $url .'/api/combinations?schema=blank')); 

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

$resources->id_product   = $ps_product_id; 
$resources->wholesale_price  = $wholesale_price; 
$resources->price    = $price; 
$resources->unit_price_impact = $unit_price_impact; 
$resources->minimal_quantity = $minimal_quantity; 
$resources->quantity   = $quantity; 
$resources->weight    = $weight; 

$resources->associations->product_option_values->product_option_value[0]->id = $color_id; 
$resources->associations->product_option_values->product_option_value[1]->id = $size_id; 

$request = $xml->asXML(); 

//This is a function that curl request to specific URL using method (POST) 
$response = ps_curl($url . '/api/combinations', $request, 'POST', $api_key); 

$xml_load = simplexml_load_string($response); 
$id  = $xml_load->combination->id; 

Я надеюсь, что это полезно :)

+0

Привет. Когда я пробую ваш пример и играю с моим собственным апики, url и т. Д. Это плохой ответ. Какой-то идиот, почему? Должен ли я включать другие вещи, кроме веб-службы и ограничений? знак равно – simon

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