如何在Magento中以编程方式更新属性选项


How to update the attribute options programmatically in Magento?

我想通过代码(以编程方式)更新/添加Magento中下拉属性的选项。我已经找到了如何添加属性选项,但是如何更新选项值。
例:
假设属性为"制造商"。我添加了三个选项 man1、man2、man3。现在通过我的自定义代码,我想将 man1 的标签更改为 man11,将 man2 的标签更改为 man22。我怎样才能做到这一点?谢谢。

好吧,我自己找到了解决方案。在此处查看完整详细信息。

//Get the eav attribute model
$attr_model = Mage::getModel('catalog/resource_eav_attribute');
//Load the particular attribute by id
//Here 73 is the id of 'manufacturer' attribute
$attr_model->load(73);
//Create an array to store the attribute data
$data = array();
//Create options array
$values = array(
    //15 is the option_id of the option in 'eav_attribute_option_value' table
    15 => array(
            0 => 'Apple'    //0 is current store id, Apple is the new label for the option
        ),
    16 => array(
            0 => 'HTC'
        ),
    17 => array(
            0 => 'Microsoft'
        ),
);
//Add the option values to the data
$data['option']['value'] = $values;
//Add data to our attribute model
$attr_model->addData($data);
//Save the updated model
try {
    $attr_model->save();
    $session = Mage::getSingleton('adminhtml/session');
    $session->addSuccess(
        Mage::helper('catalog')->__('The product attribute has been saved.'));
    /**
     * Clear translation cache because attribute labels are stored in translation
     */
    Mage::app()->cleanCache(array(Mage_Core_Model_Translate::CACHE_TAG));
    $session->setAttributeData(false);
    return;
} catch (Exception $e) {
    $session->addError($e->getMessage());
    $session->setAttributeData($data);
    return;
}
您可能

希望尝试扩展位于app''code''core''Mage''Adminhtml''controllers''Catalog''Product''AttributeController.php的AttributeController,并重写saveAction()方法以满足您的需求。