Question

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

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

Comment puis-je faire?

Était-ce utile?

La solution

attributs Multiselect peut être défini comme une liste séparée par des virgules (ou également un tableau) contenant les identifiants de valeur d'attribut.

Alors d'abord, nous devons convertir les valeurs réelles internes ids 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();

Autres conseils

Modifier la dernière ligne du code ci-dessus

$product->save();

avec

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

Il fonctionne

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top