Domanda

Sto cercando di utilizzare la funzione addAttributeOption per aggiungere una nuova opzione a un attributo.Non voglio cambiare l'ordine opzionale corrente o i valori predefiniti, ma vuoi semplicemente aggiungere una nuova opzione alla fine dell'elenco.

Prima di tutto ho provato a ottenere tutte le opzioni sull'attributo e semplicemente aggiungere la nuova come segue.

$attributeModel->getSource()->getAllOptions();
.

Ma quindi si lamenta della mancanza di valore predefinito.Idealmente non voglio dover riformattare l'array restituito da getAllOptions in quanto restituisce solo value e label.

È stato utile?

Soluzione

OK, quindi si scopre che stavo sciocco.La funzione addAttributeOption consente di aggiungere e aggiornare le opzioni.

Per aggiungere una nuova opzione è sufficiente bisogno di un array con il seguente formato.

$option['attribute_id'] = $attributeId;
$option['value'][]      = $storeValues;
.

Dove $storeValues è semplicemente un array in cui la chiave è l'ID del negozio e il valore è il valore che desideri per quel negozio.

Quindi chiamando $installer->addAttributeOption($option); verrà aggiunta la tua nuova opzione.

Per aggiornare un'opzione è sufficiente modificare l'array di opzione per avere l'ID opzionale come chiave.

$option['attribute_id']     = $attributeId;
$option['value'][$optionId] = $newStoreValues;
.

Altri suggerimenti

Questo funziona perfetto per me

$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);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top