У меня есть атрибут с именем "vendor_id".У меня есть N продуктов, которые имеют "vendor_id" в качестве атрибута продукта.Параметры для атрибута «vendor_id» создаются программно, когда администратор добавляет новую сущность «vendor».Код выглядит так:
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» будет заполнен этими объектами «vendor», которые мы создали в saveAction.() метод.
Теперь, если администратор хочет отредактировать существующую опцию атрибута, я не хочу создавать новую опцию, я хочу отредактировать существующую.Важно, чтобы идентификатор опции оставался неизменным при изменении имени / метки.
Я подключил 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 родительских класса, и я просмотрел их все для метода, который позволит мне редактировать* или обновить * имя существующей опции ...