gpt4 book ai didi

php - 在 Magento 中以编程方式更新/编辑属性选项

转载 作者:行者123 更新时间:2023-12-04 06:15:44 27 4
gpt4 key购买 nike

我有一个名为“vendor_id”的属性。我有 N 个将“vendor_id”作为产品属性的产品。当管理员添加新的“vendor”实体时,“vendor_id”属性的选项以编程方式生成。代码是这样的:

    public function saveAction()
{
$data = $this->getRequest()->getPost();
$designerName = $data['title'];

$product = Mage::getModel('catalog/product');
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
->setEntityTypeFilter($product->getResource()->getTypeId())
->addFieldToFilter('attribute_code', 'vendor_id')
->load(false);
$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$myresults = array ('value'=> array('optionone'=>array($designerName)));

$attribute->setData('option',$myresults);
$attribute->save();

这暂时有效。它将为“vendor_id”属性创建一个选项,并且当用户添加新产品(或编辑现有产品)时,“vendor_id”的下拉列表将由我们在 saveAction 上创建的这些“vendor”实体填充() 方法。

现在,如果管理员想要编辑现有属性选项,我不想创建新选项,我想编辑现有选项。当我们更改名称/标签时,选项 ID 保持不变很重要。

我已经在 newAction 中设置了一个静态变量,所以在 saveAction() 中我们可以检查我们是否正在编辑或创建一个新选项:
    if (null == MyController::$_editScope)
{
error_log('Need to update option attribute');
$attribute->addData($myresults);
}

问题是 addData() 方法就是这样做的,它添加数据,但不更新现有的。属性是:
    $attribute = $attributes->getFirstItem()->setEntity($product->getResource());

这是一个实例: http://docs.magentocommerce.com/Mage_Eav/Mage_Eav_Model_Entity_Attribute.html

它有 3 个父类,我已经查看了所有它们以寻找一种方法,该方法允许我编辑*或更新*现有选项的名称......

最佳答案

你会发现这很有用。 See complete details here .

//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;
}

关于php - 在 Magento 中以编程方式更新/编辑属性选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com