【问题标题】:How to remove a single product from mod_virtuemart_cart如何从 mod_virtuemart_cart 中删除单个产品
【发布时间】:2015-04-25 19:19:03
【问题描述】:

我通过 Virtuemart Projectleader 的链接 http://forum.virtuemart.net/index.php?topic=127483.0 找到了解决方案:

if (!class_exists('VirtueMartCart')) require(VMPATH_SITE . DS . 'helpers' . DS . 'cart.php');
$cart = VirtueMartCart::getCart();
$cart->removeProductCart($yourId);

但它不起作用。我尝试用 DIRECTORY_SEPARATOR 替换 DS,因为我使用的是 Joomla 3.x,但没有任何改变

同时 $cart->emptyCart() 起作用

Joomla 3.3.6、VM 3.0.3

【问题讨论】:

    标签: php joomla joomla3.0 joomla-extensions virtuemart


    【解决方案1】:

    这是我的解决方案

    function removeProductFromCart($product_id_to_remove){
        $cart = json_decode($_SESSION['__vm']['vmcart']);
        foreach($cart->cartProductsData as $k => $v){
            if($v->virtuemart_product_id == $product_id_to_remove) unset($cart->cartProductsData[$k]);
        }
        $_SESSION['__vm']['vmcart'] = json_encode($cart);
    }
    

    【讨论】:

    • 你可能想解释一下这是做什么的
    • ermes 谢谢,这可行,但 unset($cart->cartProductsData->$k)
    • 不幸的是,有一个问题:如果我将 [$k] 替换为 ->$k,该产品将被删除,但过了一会儿又不是,所以我将 ->$k 替换为 [ $k] 并再次删除作品,但过了一会儿我得到 stdClass' 错误,然后我将 [$k] 再次替换为 ->$k 并且圈子关闭