很多东西 :
- $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>
就是这样!