如何在PrestaShop中清除购物车中的所有产品

时间:2013-06-14 05:28:23

标签: php prestashop cart

我正在使用PrestaShop版本1.5.4.1

目前,我的购物车为每种产品都有单独的删除按钮。

如何在一个操作中删除所有产品?我只需要点击一下即可清空推车。

我在ordercontroller中使用了此代码并从themes / defaulte / shoopin-cart.tpl中调用了该函数

public function emptybag() 
{ 
     $products = $this->getProducts(); 
     foreach ($products as $product) { 
         $this->deleteProduct($product->id); 
     } 
}

3 个答案:

答案 0 :(得分:3)

很多事情:

  • $ this-> getProducts()将不会在订单控制器中运行。使用上下文来获取它
  • getProducts()方法不返回产品对象,而是产品数组的集合。您无法使用 - >获取信息使用[]而不是

有正确的功能:

public function emptybag()
  {

    $products = $this->context->cart->getProducts();
    foreach ($products as $product) {
      $this->context->cart->deleteProduct($product["id_product"]);
    }
  }

为了简化操作,请将您的功能添加到前控制器的覆盖文件中,就像您可以从前面的任何位置调用它一样。然后覆盖init函数并将这些行添加到函数的结尾(之前不是因为我们需要初始化cart属性):

if (isset($_GET['emptybag'])){
      $this->emptybag();
    }

然后,在您想要的位置添加指向您的模板的链接:

<a href="{$link->getPageLink('order', true, NULL, 'emptybag=1')}" class="button_large" title="{l s='Clear cart'}">{l s='Clear cart'}</a>

就是这样!

答案 1 :(得分:1)

要在导航中添加一个干净的网址,您可以在条件“emptybag”之后添加此行

Tools::redirect($this->context->link->getPageLink('order', true, NULL));

按订单重定向页面。

答案 2 :(得分:0)

$this->context->cart->delete();

简单!