2013-04-17 3 views
3

체크 아웃 프로세스 중에 때때로 세션의 견적에서 항목을 프로그래밍 방식으로 제거하려고합니다. $quote 객체의 항목 목록에 항목이 제거되지 않았다 즉, 여전히 루프 후, 그러나 같은Magento에서 견적에서 항목을 제거하는 방법?

$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$all_quote_items = $quote->getAllItems(); 
foreach ($all_quote_items as $item) { 
    $quote->removeItem($item->getId())->save(); 
} 

된다 그래서 나는이 코드를 시도했다.

내가 여기에 놓친 아이디어가 있습니까? 특정 유형의 항목을 찾고있는 동안 나는 유사한 과정을

답변

13

$cartHelper = Mage::helper('checkout/cart'); 
$items = $cartHelper->getCart()->getItems();   
foreach ($items as $item) 
{ 
    $itemId = $item->getItemId(); 
    $cartHelper->getCart()->removeItem($itemId)->save(); 
} 

시도 Magento 1.7.0.0 버전 http://www.magentocommerce.com/boards/viewthread/30113/

+0

고마워, 그게 문제를 발견하는 데 도움이 됐어. – Matthias

+4

각 반복마다 장바구니를 저장하지 않습니까? 왜 그걸 할거야? 반복되는 항목을 제거하고 카트를 외부에 저장하십시오. – nevvermind

+0

@Renon $ items = $ cartHelper-> getCart() -> getItems(); 사용법 API의이 줄? 위의 코드를 사용하여 장바구니 ID 또는 고객 ID로 장바구니를받을 수 있습니까? –

0

젠토 1.4.1.1를 사용

, 제가 적용되는 논리는 다음과 같습니다

$session= Mage::getSingleton('checkout/session'); 
$quote = $session->getQuote(); 

$cart = Mage::getModel('checkout/cart'); 
$cartItems = $cart->getItems(); 
foreach ($cartItems as $item) 
{ 
    $quote->removeItem($item->getId())->save(); 
} 

위를 시도하고 실패 할 경우 내가 시작할 것 이 논리의 전후에 견적 객체를 덤핑하면 어떤 차이가 있는지 확인할 수 있습니다.

+1

을 아니, 하나는 당신의 코드를 복사 루프 이후의 객체. – Matthias

+0

좋아요, 루프에서 추가 : Zend_Debug :: dump ($ quote-> removeItem ($ item-> getId()) -> save()); 이것이 무엇을 반환하는지 알려주거나, NULL이거나 유용한 데이터 여야합니다. –

6

를 참조하십시오, 당신이 사용할 수있는 1 만 항목이 $ 견적 여전히 :

Mage::getSingleton('checkout/cart')->truncate()->save(); 
관련 문제