2013-02-07 91 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