J'essaie d'ajouter des options pour les attributs de taille et de couleur dans mon module d'importateur mais je ne sais pas comment ...:
private function addOption($attributeCode, $value)
{
$ob = $this->_objectManager;
/* @var $m \Magento\Eav\Model\Entity\Attribute\OptionManagement */
$m = $this->optionManagement;
/* @var $option \Magento\Eav\Model\Entity\Attribute\Option */
$option = $this->attributeOption;
$option->setLabel($value);
$option->setValue($value);
$m->add(\Magento\Catalog\Api\Data\ProductAttributeInterface::ENTITY_TYPE_CODE,
$attributeCode,
$option);
Ce rapport d'erreur (je modifié exception des rapports sur OptionMaganger.php
la exception-> Message )
Impossible d'enregistrer la taille de l'attribut Remarque: index non défini: supprimer dans /var/www/html/magento2/vendor/magento/module-swatches/Model/Plugin/EavAttribute.php à la ligne 177
- L'OptionManagement et l'Option proviennent de
_contstructor
- Avec OptionManagement, je peux récupérer les éléments existants, donc ça devrait aller.
setLabel()
et setValue()
sont par défaut, mais j'ai essayé setData , charger une instance d'option et passer OptionManagement->getItems
pour ajouter (...) "encore", mais l'erreur existe toujours ...
Une idée, comment puis-je ajouter des options EAV (échantillons?) Pendant le processus d'importation? (pas dans la configuration du module)
Mise à jour :
Autre moyen, je peux ajouter une option:
$attributeCode = 137; /* on size, 90 on color ... */
$languageValues[0]='Admin Label';
$languageValues[1]='Default Store Label - XXXXL';
$ob = $this->_objectManager;
private function addOption($attributeCode,$languageValues){
$ob = $this->_objectManager;
/* @var $attr \Magento\Eav\Model\Entity\Attribute */
$attr = $ob->create('\Magento\Eav\Model\Entity\Attribute');
$attr->load($attributeCode);
$option = [];
$option['value'][$languageValues[0]] = $languageValues;
$attr->addData(array('option' => $option));
$attr->save();
}
De cette façon, Magento2 peut enregistrer une option à attribuer, mais je ne sais pas quelle est la manière "officielle" :)