【问题标题】:Magento API in C#.Net: catalogProductRequestAttributes problemC#.Net 中的 Magento API:catalogProductRequestAttributes 问题
【发布时间】:2010-09-23 13:16:02
【问题描述】:

我有下面的代码,试图让产品返回所有相关属性。

我没有收到任何错误,但在“prod”变量中看不到任何属性。

    private void frmProductDetail_Load(object sender, EventArgs e)
    {
        MagentoService service = new MagentoService();
        MagentoServiceHelper help = MagentoServiceHelper.Instance;

        catalogAttributeEntity[] attributes = service.catalogProductAttributeList(help.SessionID, AttributeSet); //AttributeSet is a property of the form

        catalogProductRequestAttributes att = new catalogProductRequestAttributes();
        string[] attlist = new string[attributes.Length];

        for (int i = 0; i < attributes.Length; i++)
        {
            attlist[i] = attributes[i].code;
        }

        att.attributes = attlist;

        catalogProductReturnEntity prod = service.catalogProductInfo(help.SessionID,
            ProductId, "default", att, "sku"); //ProductId is a property of the form
    }

【问题讨论】:

    标签: c# soap magento


    【解决方案1】:

    您是要获取标准(内置)属性还是自定义属性?

    请注意,catalogProductRequestAttributes 对象(它告诉 Magento 您想要获取哪些属性)有两个集合 - 一个用于标准属性,一个用于自定义。

    这样的事情应该可以工作:

    // assumes sessionId, sku and storeView are defined already
    catalogProductRequestAttributes fetchattrib = new catalogProductRequestAttributes();
    // it will only populate the attributes that you ask for
    fetchattrib.attributes = new string[] { "name", "description", "short_description"};
    fetchattrib.additional_attributes = new string[] { "number_of_legs", "can_jump"};
    catalogProductReturnEntity prod = m_magentoClient.catalogProductInfo(
        sessionId, sku, storeView, fetchattrib, "sku");
    

    【讨论】:

      【解决方案2】:

      尝试将 catalogProductInfo 中的最后一个属性设置为“无”

      objResource = magentoAPI.catalogProductInfo(gbl_strSession, productID, setStoreviewName, mc_filter, nothing)
      

      Magento 1.4 productIdentifierType

      【讨论】:

      • 您的意思大概是“null”而不是“nothing”?
      【解决方案3】:

      丹尼斯,

      经过大量的反复试验,以下方法对我有用:

      1) 调用 catalogProductAttributeList() 中的 AttributeSet 参数应该是一个整数,Magento 可以将其识别为一组已知的属性。我使用 Magento Go 附带的默认数据,数字 9、38、39、40、41、42、44、45、46、58、59、60、61 和 62 有效。按此顺序,返回的属性总数为 63、67、71、68、66、68、67、65、63、63、61、63、66 和 64。我看到值 9 应该足够大多数产品。

      2) 调用catalogProductInfo() 的第二个参数必须对应一个真正的Magento product_id。例如,如果您要枚举销售订单,则该参数可以是 salesOrderItemEntity.product_id 的值。

      3) 除了上面的第 2 点之外,catalogProductInfo() 调用中的最后一个参数必须为 null。

      如果您使用 SKU 而不是 product_id,则第二个参数必须是产品的 SKU(而不是产品 ID),最后一个参数必须是“sku”。

      希望这会有所帮助。

      PS:所有的属性集(例如,对应于上面给出的 14 个 ID)都可以通过使用 catalogProductAttributeSetList() 来枚举,它返回一个 objcatalogProductAttributeSetEntity 对象的数组。

      【讨论】:

      • 我刚刚注意到这个问题是一年多前提出的。如果这个回应太少太晚,我深表歉意。无论如何,由于这个问题还没有得到回答,我想它对于有类似问题的人来说仍然可以派上用场。
      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2017-04-05
      相关资源
      最近更新 更多