我是magento的初学者。我需要将动态价格从详细页面传递到购物车。
现在,当我通过动态价格时,它不会在购物车中更新,而是被产品的原始价格取代。
任何帮助将不胜感激。在这条线上,我得到了价格价值。$price=$this->getRequest()->getParam('price_custom');
索引控制器.php
public function cartAction()
{
if ($this->getRequest()->getParam('cart')){
if ($this->getRequest()->getParam('cart') == "delete"){
$id = $this->getRequest()->getParam('id');
if ($id) {
try {
Mage::getSingleton('checkout/cart')->removeItem($id)
->save();
} catch (Exception $e) {
Mage::getSingleton('checkout/session')->addError($this->__('Cannot remove item'));
}
}
}
}
if ($this->getRequest()->getParam('product')) {
$cart = Mage::getSingleton('checkout/cart');
$params = $this->getRequest()->getParams();
$related = $this->getRequest()->getParam('related_product');
$price=$this->getRequest()->getParam('price_custom');
$productId = (int) $this->getRequest()->getParam('product');
if ($productId) {
$product = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($productId);
try {
if (!isset($params['qty'])) {
$params['qty'] = 1;
}
$cart->addProduct($product, $params);
if (!empty($related)) {
$cart->addProductsByIds(explode(',', $related));
}
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
Mage::getSingleton('checkout/session')->setCartInsertedItem($product->getId());
$img = '';
Mage::dispatchEvent('checkout_cart_add_product_complete', array('product'=>$product, 'request'=>$this->getRequest()));
$photo_arr = explode("x",Mage::getStoreConfig('mdlajaxcheckout/default/mdl_ajax_cart_image_size', Mage::app()->getStore()->getId()));
$img = '<img src="'.Mage::helper('catalog/image')->init($product, 'image')->resize($photo_arr[0],$photo_arr[1]).'" width="'.$photo_arr[0].'" height="'.$photo_arr[1].'" />';
$message = $this->__('%s was successfully added to your shopping cart.', $product->getName());
Mage::getSingleton('checkout/session')->addSuccess('<div class="mdlajax-checkout-img">'.$img.'</div><div class="mdlajax-checkout-txt">'.$message.'</div>');
}
catch (Mage_Core_Exception $e) {
if (Mage::getSingleton('checkout/session')->getUseNotice(true)) {
Mage::getSingleton('checkout/session')->addNotice($e->getMessage());
} else {
$messages = array_unique(explode("\n", $e->getMessage()));
foreach ($messages as $message) {
Mage::getSingleton('checkout/session')->addError($message);
}
}
}
catch (Exception $e) {
Mage::getSingleton('checkout/session')->addException($e, $this->__('Can not add item to shopping cart'));
}
}
}
$this->loadLayout();
$this->_initLayoutMessages('checkout/session');
$this->renderLayout();
}
观察者.php
class Mdl_Ajaxcheckout_Model_Observer
{
public function modifyPrice(Varien_Event_Observer $obs)
{
// Get the quote item
$item = $obs->getQuoteItem();
// Ensure we have the parent item, if it has one
$item = ( $item->getParentItem() ? $item->getParentItem() : $item );
// Load the custom price
$price =$item->getRequest()->getParam('price_custom');
// Set the custom price
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
// Enable super mode on the product.
$item->getProduct()->setIsSuperMode(true);
}
}
请建议。