Получить значение атрибута товара на странице корзины, которое изменяется на странице сведений о продукте
Я разрабатываю одно расширение. Я создал атрибут в бэкэнде и назначил его продукту. И я изменяю этот атрибут продукта при добавлении в корзину, и я выбираю то же самое на странице оформления заказа/корзины, но я не могу получить то же значение на странице оформления заказа/корзины.
Я сохраняю эту стоимость товара в модели оформления заказа/корзины следующим образом:
//saving product to cart
$product_id = Mage::app()->getRequest()->getPost('id');
$qty = Mage::app()->getRequest()->getPost('qty');
$product = Mage::getModel('catalog/product')->load($product_id);
$product->setCanImage('wasdwasdwasd');
$cart = Mage::getModel('checkout/cart');
$cart->init();
$cart->addProduct($product, array('qty' => $qty));
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
Mage::getSingleton('core/session')->addSuccess('Product added successfully');
И я могу получить значение своего атрибута на той же странице, как следующий код, но я не могу получить его при оформлении заказа/в корзине страница.
$cartQuote = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems();
foreach ($cartQuote as $item) {
$productId = $item->getProduct()->getId();
$productPrice = $item->getProduct()->getPrice();
$item->getProduct()->getCanImage();//I can get my value here
}
И я использовал тот же код, что и выше, но я не получаю ценность из предложения по оформлению заказа/корзине.
И я не хочу хранить это значение в базе данных, потому что это создаст проблемы, если многие пользователи будут добавлять этот продукт динамически, поэтому я думаю, что цитата - хорошее место для хранения данных для продукта.
Пожалуйста, предложите мне решение.
2 answers
Во-первых, $product->setCanImage('wasdwasdwasd');
не сохраняет значение в объекте модели до использования $product->save();
Итак, вы не мог получить $item->getProduct()->getCanImage()
данные в виде $item->getProduct()->getCanImage()
являются Объект Mage_Catalog_Model_Продукт.
Одна вещь, которую вы можете сделать сохраните значение в переменной сеанса затем используйте его на странице оформление заказа/корзина.
Концепция заключается в том, что значение переменной сеанса сохраняется в виде массива в формате, подобном.
$ValueinArray=array('product_id_1'=>$value,product_id_2'=>$value2,product_id_3'=>$value3); Mage::getSingleton( 'customer/session' )->setCanImage($ValueinArray);
Затем на страница корзины вам нужно вызвать это значение переменной с помощью Mage::getSingleton( 'customer/session' )->getCanImage()
и совпадать с индексом продукта
$product->save()
отсутствует в вашем коде.
Я буду рекомендовать использовать сеанс клиента, чтобы установить это значение и получить его на странице корзины. Пожалуйста, не забудьте снять значение сеанса
Mage::getSingleton('customer/session')->unsCanImage();