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.

Était-ce utile?

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;

$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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top