Magento 在将产品添加到购物车之前,在两个报价之间切换
在将产品添加到报价中之前,我尝试在两个报价之间切换。为此,我在CartController中设置了覆盖addAction 首先,如果我有报价id,我将取消其设置Magento 在将产品添加到购物车之前,在两个报价之间切换,magento,magento-1.8,Magento,Magento 1.8,在将产品添加到报价中之前,我尝试在两个报价之间切换。为此,我在CartController中设置了覆盖addAction 首先,如果我有报价id,我将取消其设置 $session = Mage::getSingleton('checkout/session'); $quote_id = $session->getQuoteId(); //unset the current quote id IsActive(0) and save $quote = Mag
$session = Mage::getSingleton('checkout/session');
$quote_id = $session->getQuoteId();
//unset the current quote id IsActive(0) and save
$quote = Mage::getModel('sales/quote')->load($quote_id);
$quote->setIsActive(0);
$quote->save();
Mage::getSingleton('checkout/session')->setQuoteId(null);
我在url中得到了一个额外的参数
$params = $this->getRequest()->getParams();
$free_home_trial = 0;
if(isset($params['freehometrial'])){
$free_home_trial = (int)$params['freehometrial'];
}
通过这一点,我检查哪个报价加载
if($free_home_trial){
//check freetrial session Mage::getSingleton('checkout/session')->getFreeTrial()
//if it is not null then load it
$freetrial = Mage::getSingleton('core/session')->getFreeTrial();
if(!is_null($freetrial)){
$quote = Mage::getModel('sales/quote')->load($freetrial);
$quote->setIsActive(1)->save();
//$session->setData($quote);
$session->setQuoteId($freetrial);
}
}else{
//check for normal session
//if it is not null then load it
$normalsession = Mage::getSingleton('core/session')->getNormalCart();
// var_dump($freetrial);die;
if(!is_null($normalsession)){
$quote = Mage::getModel('sales/quote')->load($normalsession);
$quote->setIsActive(1)->save();
$session->setQuoteId($normalsession);
}
}
$this->\u getSession()->setCartWasUpdated(true)之后代码>如果会话不存在,我将保存这些会话
//Create session free or normal based on the url parameter
if($free_home_trial){
if(is_null(Mage::getSingleton('core/session')->getFreeTrial())){
Mage::getSingleton('core/session')->setFreeTrial(Mage::getSingleton('checkout/session')->getQuoteId());
}
}else{
if(is_null(Mage::getSingleton('core/session')->getNormalCart())){
Mage::getSingleton('core/session')->setNormalCart(Mage::getSingleton('checkout/session')->getQuoteId());
}
}
我不知道为什么免费试用版和普通版都使用相同的报价id,即使我在报价时将IsActive保存为0,在会话时将报价id设置为null
提前谢谢
更多澄清
我想要两个购物车,这就是为什么我想要两个引号并在它们之间切换。当客户单击第一次添加到购物车时,产品应添加到第一次购物车中;当客户单击第二次添加到购物车时,产品应添加到第二次购物车中。仅此而已,我已覆盖CartController的添加操作。您可以使用合并功能切换购物车
$quoteA = Mage::getModel('sales/quote')->load('5');
$quoteB = Mage::getModel('sales/quote')->load('77');
$quoteB->merge($quoteA);
// Also?
$quoteB->collectTotals()->save();
Zend_Debug::dump($quoteB->getAllItems());
谢谢,但我想合并方法是用来合并两个引号的,但我不想这样做。我已经对我的问题进行了澄清。我想创建自定义rest api,用于将产品添加到购物车。可以告诉我该过程是什么吗?实际上,我正在报价中保存产品,它反映在magento管理面板中的报告中,但不会添加到特定用户。