J'essaie de créer un produit configurable appelé "Kudos Configurable" avec des options permettant à l'utilisateur de choisir entre le petit vert, le grand vert, le petit orange et le grand orange.
Je suis arrivé au stade où un produit configurable a été créé via l'API en utilisant le JSON suivant dans une demande PUT à / rest / V1 / products / KudosConfig.
{
"product":{
"sku":"KudosConfig",
"name":"Kudos Configurable",
"price":30.00,
"status":4,
"type_id":"configurable",
"attribute_set_id":4,
"weight":1,
"extension_attributes":{
"stock_item":{
"qty":10,
"is_in_stock":true
}
}
}
}
Les produits enfants ont été créés à l'aide de l'API en utilisant le JSON suivant pour chacun des 4 éléments avec des attributs de taille et de couleur définis via la même méthode.
{
"product":{
"sku":"KudosConfigGreenSmall ",
"name":"Kudos Configurable Green Small",
"price":30.00,
"status":0,
"type_id":"virtual",
"visibility":1,
"attribute_set_id":4,
"weight":1,
"extension_attributes":{
"stock_item":{
"qty":10,
"is_in_stock":true
}
},
"custom_attributes":[
{
"attribute_code":"kudos_colour",
"value":"328"
},
{
"attribute_code":"kudos_size",
"value":"330"
}
]
}
}
Cela fonctionne bien et les produits sont créés avec les attributs correctement définis.
J'avais pensé que la dernière étape consistait à utiliser le service configurableProductLinkManagementV1 pour lier les produits enfants, mais en utilisant une demande POST vers / rest / V1 / configurable-products / KudosConfig / child avec le JSON suivant renvoie une erreur de demande incorrecte HTTP 400.
{
"childSku":"KudosConfigGreenSmall"
}
Je pense qu'il pourrait y avoir autre chose que je dois faire sur le produit parent, mais j'ai du mal à trouver quoi. Dans le service catalogProductRepositoryV1, vous pouvez ajouter un tableau d'options_produits_configurables, j'ai essayé de jouer avec cela, mais je n'ai récupéré que des erreurs de demande incorrectes.
Toute lumière que n'importe qui pourrait jeter sur ce sujet serait très appréciée, déjà dépensée beaucoup trop longtemps à ce sujet.
ÉDITER:
J'ai maintenant essayé d'ajouter les configurable_product_options dans la demande PUT de produit configurable, cela ressemble maintenant à ceci.
{
"product":{
"sku":"KudosConfig",
"name":"Kudos Configurable",
"price":30.00,
"status":4,
"type_id":"configurable",
"attribute_set_id":4,
"weight":1,
"extension_attributes":{
"stock_item":{
"qty":10,
"is_in_stock":true
},
"configurable_product_options":[
{
"attribute__id":"kudos_colour",
"label":"Colour",
"values":[
{
"value_index":340
},
{
"value_index":341
}
]
},
{
"attribute__id":"kudos_size",
"label":"Size",
"values":[
{
"value_index":343
},
{
"value_index":342
}
]
}
]
}
}
}
Lorsque j'essaie, je reçois une réponse 400 avec le message:
Une erreur s'est produite lors de l'enregistrement de l'option.
Pas particulièrement utile ...
Un petit peu de recherche sur Google suggère que c'est le problème https://github.com/magento/magento2/issues/5580 .
La prochaine étape consiste à voir si le client est heureux de pirater le fichier configurable.php.
EDIT: J'ai maintenant essayé de changer le fichier configurable.php mais ne semble pas avoir fait de différence, obtenant toujours la même erreur, donc perplexe à nouveau.