Как изменить настраиваемый атрибут набора настраиваемых атрибутов при добавлении в корзину?

Я хочу изменить значение своего пользовательского атрибута (voucher_value) в наборе настраиваемых атрибутов (ваучер) при добавлении в корзину. Я пробовал в событии наблюдателя checkout_cart_product_add_after. Мне удалось изменить цену, но не удалось изменить значение пользовательского атрибута voucher_value.

Вот моя функция

    public function change_price($observer) {
        // Get the quote item
        $item = $observer->getQuoteItem();
        // Ensure we have the parent item, if it has one
        $item = ($item->getParentItem() ? $item->getParentItem() : $item );
        Mage::log("Item Details: ".print_r($item, true), null, 'item_before1.log');
        // Load the custom price
        $price = Mage::app()->getRequest()->getPost('custom_voucher_price');
            if(!empty($price)){
                    $product = Mage::getModel('catalog/product')->load($item->getProductId());
                    $product->addAttributeUpdate('voucher_value', 39 , 1);
                    //$product->addCustomOption('voucher_value_value', 259 , $product);
                    $product->save();
                    $voucher_discount = $product->getAttributeText('voucher_discount');
                    $voucher_value = $product->getAttributeText('voucher_value');
                    Mage::log("voucher_value: ".print_r($voucher_value, true), null, 'voucher_value.log');
                    $voucher_discount_amount = 0;
                    if($voucher_discount!=null && (!empty($voucher_discount))){
                    $voucher_discount = floatval($voucher_discount);
                    $voucher_discount_amount = $price * $voucher_discount/100;
                    }
                    else{
                    $voucher_discount = 0;
                    }
                    $custom_price = $price - $voucher_discount_amount;

                    $item->setCustomPrice($custom_price);

                    $item->setOriginalCustomPrice($custom_price);
                    $info = $item->getOptions();

                $option = Mage::getModel('sales/quote_item_option')
                    ->setProductId($product->getId())
                    ->setCode('voucher_value')
                    ->setProduct($product) // needed for EE only ?
                    ->setValue(39);
                $item->addOption($option); 
                $product = $observer->getProduct();

                $item->setCustomAttribute($product->getCustomAttribute());

                //  $item->setOptions($option);                
                //  $item->setData('voucher_value_value', $price ); */
                } 
    $item->save(); 
    // Enable super mode on the product.
    $item->getProduct()->setIsSuperMode(true);
}

Пожалуйста, помогите, как изменить значение пользовательского атрибута набора настраиваемых атрибутов.


person Sagardevd    schedule 23.09.2015    source источник


Ответы (1)


Можете ли вы попробовать использовать:

$product = Mage::getModel('catalog/product')->load($item->getProductId());
                    $product->setVoucherCode($new_value);
                    $product->save();
person Mihir Bhende    schedule 23.09.2015
comment
метод setVoucherCode недоступен - person Sagardevd; 23.09.2015
comment
этот пользовательский атрибут (voucher_value) имеет цены в раскрывающемся списке в бэкэнде. Я могу установить с помощью setData('voucher_value',$new_value); функция одного из значений из раскрывающегося списка, но я хочу установить пользовательское значение, введенное пользователем в интерфейсе - person Sagardevd; 23.09.2015