2010-09-23 3 views
4

J'ai le code ci-dessous, en essayant d'obtenir un produit retourné avec tous les attributs appropriés.API Magento en C# .Net: problème de catalogProductRequestAttributes

Je ne reçois aucune erreur mais je ne vois aucun attribut dans la variable "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 
    } 

Répondre

0

essayez de régler le dernier attribut dans catalogProductInfo à "rien"

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

Magento 1.4 productIdentifierType

+0

Non, cela ne fonctionne pas. Je reçois exactement les mêmes résultats. –

+0

http://code.google.com/p/csharlibformagexmlrpcapi/ Peut vous aider? – B00MER

+0

Vous voulez dire "nul" plutôt que "rien", sans doute? – codeulike

4

Êtes-vous essayer d'obtenir le standard (intégré) attributs, ou ceux personnalisés?

Notez que l'objet catalogProductRequestAttributes (qui indique à Magento les attributs que vous voulez obtenir) a deux collections - une pour les attributs standard et une pour la coutume.

Quelque chose comme cela devrait fonctionner:

// 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"); 
0

Dennis,

Basé sur un peu d'essais et d'erreurs, ce qui suit a fonctionné pour moi:

1) Le paramètre AttributeSet dans la call to catalogProductAttributeList() doit être un entier que Magento peut identifier comme un ensemble d'attributs connu. J'ai travaillé avec les données par défaut qui vient avec Magento Go et les numéros 9, 38, 39, 40, 41, 42, 44, 45, 46, 58, 59, 60, 61 et 62 travaillé. Dans cet ordre, le nombre total d'attributs renvoyés était 63, 67, 71, 68, 66, 68, 67, 65, 63, 63, 61, 63, 66 et 64. Je vois que la valeur 9 devrait être suffisante pour la plupart des produits

2) Le deuxième paramètre de l'appel à catalogProductInfo() doit correspondre à un véritable identifiant de produit Magento. Par exemple, si vous énumérez des commandes clients, le paramètre peut être la valeur de salesOrderItemEntity.product_id.

3) En plus du point 2 ci-dessus, le dernier paramètre de l'appel à catalogProductInfo() doit être nul. Si vous utilisez SKU au lieu de product_id, le deuxième paramètre DOIT être le SKU du produit (pas l'ID du produit) et le dernier paramètre doit être "sku".

Espérons que cela aide. PS: tous les jeux d'attributs (correspondant aux 14 ID indiqués ci-dessus, par exemple) peuvent être énumérés en utilisant catalogProductAttributeSetList(), qui retourne un tableau d'objets objcatalogProductAttributeSetEntity.

+1

Je viens de remarquer que cette question a été posée il y a plus d'un an. Je m'excuse si cette réponse a été trop peu trop tard. Quoi qu'il en soit, comme la question n'a pas encore reçu de réponse, je suppose que cela pourrait toujours être utile pour quelqu'un avec un problème similaire. –