我正在创建一个Prestashop自定义挂钩到客户端,以便在将产品添加到购物车时将信息发送到API。我正在使用hookActionCartSave,但当购物车更新或添加新产品时,会触发此钩子。所以我的问题是,我如何才能检查触发了哪个操作,并仅在添加新产品时执行我的代码。你会在下面找到我的代码。谢谢你的帮助。
public function hookActionCartSave($params)
{
if (!Validate::isLoadedObject($this->context->cart) || !Validate::isLoadedObject($params['cart'])) {
return false;
} else {
$cart = $params['cart'] ;
$products = $cart->getProducts();
$product_count = 0;
//get products details
$products_details = array();
foreach($products as $item){
$products_details[] = array(
"name" => $item->product_name,
"product_id" => $item->product_id,
"price" => $item->total_price_tax_incl,
"quantity" => $item->product_quantity
);
$product_count = $product_count + $item->product_quantity ;
}
$productsJsonData = json_encode($products_details);
$last_cart_product = $cart->getLastProduct();
$last_added_product = new Product($last_cart_product['id_product']);
// send data to my API
}
我认为您可以使用actionObjectCartAddAfter钩子来执行您想要的操作。
如果您想了解有关这个钩子的更多信息,可以在add函数的/classes/ObjectModel.php文件中看到它。