Ajouter une nouvelle option pour produit existant attribut
-
12-12-2019 - |
Question
Je suis en train d'utiliser la fonction addAttributeOption
pour ajouter une nouvelle option pour un attribut.Je ne veux pas changer l'option en cours de commande ou par défaut, mais souhaitez tout simplement ajouter une nouvelle option à la fin de la liste.
Tout d'abord j'ai essayé toutes les options sur l'attribut et tout simplement ajouter l'un comme suit.
$attributeModel->getSource()->getAllOptions();
Mais alors, il se plaint du manque de valeur par défaut.Idéalement, je ne veux pas avoir à reformater le tableau retourné par getAllOptions
comme elle renvoie uniquement value
et label
.
La solution
Ok, donc il s'avère que j'ai été stupide.La fonction addAttributeOption
vous permet d'ajouter et de mettre à jour les options.
Pour ajouter une nouvelle option vous suffit d'avoir un tableau avec le format suivant.
$option['attribute_id'] = $attributeId;
$option['value'][] = $storeValues;
Où $storeValues
est tout simplement un tableau où la clé est l'id de stockage et la valeur est la valeur que vous souhaitez pour ce magasin.
Puis en appelant $installer->addAttributeOption($option);
votre nouvelle option sera ajoutée.
Pour mettre à jour une option que vous avez simplement besoin de changer votre option de la matrice de d'avoir la possibilité de l'id de la clé.
$option['attribute_id'] = $attributeId;
$option['value'][$optionId] = $newStoreValues;
Autres conseils
cela fonctionne parfaitement pour moi
$arg_attribute = 'manufacturer';
$arg_value = 'new option to be added';
$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
$attr_id = $attr->getAttributeId();
$option['attribute_id'] = $attr_id;
$option['value']['any_option_name'][0] = $arg_value;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);