2

我正在使用 PrestaShop 版本 1.5.4.1

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

如何一次性删除所有产品?我只需要一键清空购物车。

我已使用此代码ordercontroller并从主题/defaulte/shoopin-cart.tpl 调用该函数

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

3 回答 3

3

很多东西 :

  • $this->getProducts() 在订单控制器中不起作用。使用 get it with context 代替
  • 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>

就是这样!

于 2013-08-05T09:07:22.843 回答
1

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

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

按订单重定向页面。

于 2013-10-18T11:27:11.243 回答
0
$this->context->cart->delete();

简单的!

于 2014-07-09T21:28:06.690 回答