2012-11-15 2 views
1

나는 장바구니에서 단 하나의 수량을 제거하기 위해 노력하고 있지만, 아무 소용이 없습니다.Magento - 카트에서 하나의 수량 만 꺼내기

아무도 도와 줄 수 있습니까? , R.S. 덕분에 여기에서 작동하는 코드는 다음과 같습니다

는 내가 지금까지 가지고 코드 ...

require_once 'app/Mage.php'; 
Mage::app("default"); 
Mage::getSingleton("core/session", array("name" => "frontend")); 
$session = Mage::getSingleton("customer/session"); 

$yourProId = $_POST['prodID']; 
$qty = 1; 

foreach (Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item) { 
    if ($yourProId == $item->getProductId()) { 
     Mage::getSingleton('checkout/cart')->removeItem($item->getId())->save(); 
    } 
} 

UPDATE입니다 이것을 위해서!

$yourProId = $_POST['prodID']; 
$qty=1; 

$cartHelper = Mage::helper('checkout/cart'); 
$items = $cartHelper->getCart()->getItems(); 
foreach ($items as $item) { 
if ($item->getProduct()->getId() == $yourProId) { 
    $qty = $item->getQty() - 1; // check if greater then 0 or set it to what you want 
    if($qty == 0) { 
     Mage::getSingleton('checkout/cart')->removeItem($item->getId());  
    } else { 
      $item->setQty($qty); 
     } 
     $cartHelper->getCart()->save(); 
     break; 
    } 
} 

답변

4

당신은 변경하거나 제거 할 수 있습니다 http://www.magentocommerce.com/boards/viewthread/30113/

+0

나는 이것을 시도했지만 불행히도 작동하지 않았다. 어떤 이유로 $ item-> getId()는 my $ yourProId와 다릅니다. $ item-> getProductId()를 사용하면 올바른 ID가 반환됩니다. –

+0

아직 운이 없다 : (카트에서 제품을 꺼내지 만 모든 수량을 지우고 싶지는 않습니다. 예를 들어 카트에서 같은 제품을 5 개 가지고 있는데이 기능을 실행하면 0이됩니다. 카트,하지만 4로 내려 가야합니다. –

+0

방금 ​​내 대답을 업데이트합니다 –

0

참조

$cartHelper = Mage::helper('checkout/cart'); 
$items = $cartHelper->getCart()->getItems(); 
foreach ($items as $item) { 
    if ($item->getProduct()->getId() == $yourProId) { 
     if($item->getQty() == 1){ 
      $cartHelper->getCart()->removeItem($item->getItemId())->save(); 
     } 
     else if($item->getQty() > 1){ 
      $item->setQty($item->getQty() - 1) 
      $cartHelper->getCart()->save(); 
     } 
     break; 
    } 
} 

이 /app/code/core/Mage/Checkout/controllers/CartController.php

@보세요 시도 $ quoteItem-> setData ('qty', $ avl_qty)를 사용하여 수량; 자세한 내용은 코드를 참조하십시오.

$quoteItem = $observer->getEvent()->getQuoteItem(); 
$avl_qty = 1; 
if ($avl_qty == '0') { 
    $quoteItem->getQuote()->removeItem($quoteItem->getItemId()); 
    throw new LocalizedException(__("This product is currently out of stock."));      
} 
elseif ($order_qty > $avl_qty) {     
    $quoteItem->setData('qty', $avl_qty); 
    $this->_cart->save(); 
    $this->messageManager->addNoticeMessage('Sorry we have only '.$avl_qty.' qty of this product available');      
} 
else {     
} 
관련 문제