2013-07-16 2 views
3

я не знаю, если это вообще возможно, чтобы получить список СМИ со списком продуктов без необходимости делать несколько .call() 'sMagento API: Получить продукты/детали со средствами массовой информации в одном вызове

ли multiCall() вариант как-то? Я должен иметь возвращаемые значения из первого вызова в этом multiCall(), чтобы вставить во второй, который извлекает носитель, но документация Magento, по моему мнению, оставляет желать лучшего.

Должен ли я создать собственное расширение API только для того, чтобы сделать что-то такое же простое, как URL-адрес возврата изображения с информацией о продукте?

Вот что у меня есть на данный момент:

<?php 
$soap = new SoapClient('http://hello-magento.local/magento/api/soap?wsdl'); 
$session_id = $soap->login('username', 'password'); 

$product_list = $soap->call($session_id, 'product.list'); 

$products = array(); 

foreach($product_list as $product_item) 
{ 
    $product_id = $product_item['product_id']; 
    $product_image = $soap->call($session_id, 'catalog_product_attribute_media.list', $product_id); 

    $product_details = array(); 
    $product_details['id']  = $product_id; 
    $product_details['name'] = $product_item['name']; 
    $product_details['image'] = $product_image[0]['url']; 

    $products['products'][] = $product_details; 
} 

$soap->endSession($session_id); 

echo json_encode($products); 
?> 

ответ

1

У меня была аналогичная проблема, где я хотел бы получить больше информации по позициям заказа при получении списка заказов. Я смог решить это, создав модуль с наблюдателем. Всякий раз, когда загружается модель заказа, я могу сделать $ order-> setMyCustomValue ($ orderItemInfo), и эти данные появятся, когда я сделаю запрос order.list.

Глядя на Mage_Catalog_Model_Product_Api, основная информация о продукте (product_id, sku, name и т. Д.) Жестко закодирована в методе items (какие вызовы product.list). Единственный способ, который я вижу вокруг этого, - создать настраиваемый модуль, который перезаписывает и расширяет Mage_Catalog_Model_Product_Api. Вызовите метод родительских элементов, затем добавьте данные, необходимые для результата (например, URL-адрес носителя), и верните их.

Пользовательский API тоже будет работать, но это будет немного больше работы.

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