Comment définir par programme l'attribut de sélection multiple d'un produit par étiquettes

16

Si vous avez un attribut multisélection et que vous souhaitez définir la sélection sur un produit.

$selectedOptions = "red,green,blue";
$product->..... // # what to do?

Comment puis je faire ça?

Alex
la source

Réponses:

24

Les attributs multisélection peuvent être définis comme une liste séparée par des virgules (ou également un tableau) contenant les identifiants des valeurs d'attribut.

Nous devons donc d'abord convertir les valeurs réelles en identifiants internes de Magento.

$attrCode = 'color_base';
$sourceModel = Mage::getModel('catalog/product')->getResource()
    ->getAttribute($attrCode)->getSource();
$valuesText = explode(',', 'red,green,blue');
$valuesIds = array_map(array($sourceModel, 'getOptionId'), $valuesText);
$product->setData($attrCode, $valuesIds);
$product->save();
Alex
la source
cela ne fonctionne pas, la page continue de se charger avec ce code
Mp de la Vega
2

Modifier la dernière ligne du code ci-dessus

$product->save();

avec

$product->getResource()->saveAttribute($product, $attrCode);

Ça marche

Lovely Arora
la source