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?

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();

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.