2013-02-07 65 views
2

我正在閱讀magnetos文檔,並在其中有一節介紹瞭如何檢索產品附加屬性。Magento Soap V2 catalogProductListOfAdditionalAttributes無法識別。

http://www.magentocommerce.com/api/soap/catalog/catalogProduct/catalog_product.listOfAdditionalAttributes.html

一個他們表現出的例子是肥皂V2以下...

$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl'); // TODO : change url 
$sessionId = $proxy->login('apiUser', 'apiKey'); // TODO : change login and pwd if necessary 

$result = $proxy->catalogProductListOfAdditionalAttributes($sessionId, 'simple', '13'); 
var_dump($result); 

那麼我想這個例子,我得到SOAP錯誤。說下面

Fatal error: Uncaught SoapFault exception: [Client] Function ("catalogProductListOfAdditionalAttributes") is not a valid method for this service 

我查了wsdl xml頁的方法,我找不到任何遠程匹配它。那麼文件的日期是?我的wsdl已經過期或者在這裏發生了什麼?我使用V2

+0

您正在使用哪個版本的Magento?您的示例在1.7上正常工作,文檔是最新的。請檢查您的wsdl是否被緩存(配置/服務/ Magento核心API /使用wsdl緩存),並且您的api用戶有權訪問資源(API角色) –

+0

此API調用在Magento ver的Soap V2的WSDL中肯定缺失1.13.1.0,但它仍然在文檔中。這不是緩存或訪問問題。我認爲Magento的開發人員已經將其刪除,以便更準確地將其嵌入您在下面的CatalogProductAttribute調用集中,但忘記更新文檔。 – JReader

回答

5

想通了......

$attributeList = $fclient->catalogProductAttributeList($fsession, $prod->set); 

上面給你額外的和核心屬性。其中$ prod-> set是產品屬性集編號。

甚至更​​好。如果你想獲得所有的某些產品的屬性值,你可以做以下

 foreach($attributeList as $attr) { 
      $attributes->additional_attributes[] = $attr->code; 
     } 
     $prodInfo = $fclient->catalogProductInfo($fsession, $prod->product_id, null,$attributes); 

以上將返回全部產品屬性的價值核心和自定義的範圍內的附加屬性。

+1

您是否曾經找到過獲取產品信息的方式,以便在不首先將其枚舉到其他屬性數組中的情況下返回所有屬性?看起來像一個簡單的通配符方法將是理想的,但我已經嘗試了所有我能想到的組合。有時我只需要一個具有所有屬性的快速產品調用,並且兩次調用並不理想,並且我不能總是提前緩存屬性列表。 – JReader