Есть сайт.
ТЫЦ
При добавлении товара и дополнительных товаров к нему
Кладу товар и 2 доп товара (2шт каждый)
По итогу кладется в корзину не один а два товара, а дополнительные товары не 2 а 4.
Сама функция добавления товара
Функция добавления товара
/*
*
* Добавление варианта товара в корзину
*
*/
public function add_item($variant_id, $amount = 1, $add_variants=array())
{
// Выберем товар из базы, заодно убедившись в его существовании
$variant = $this->variants->get_variant($variant_id);
// Проверяем дополнительные варианты
$data = 0;
if(!empty($add_variants))
{
$variants = $this->variants->get_variants(array('id'=>array_keys($add_variants)));
if(!empty($variants)){
foreach($variants as $av)
{
if($av->stock>0)
{
$amount = max(1, $add_variants[$av->id]);
$ext_variants[$av->id] = intval(min($amount, $av->stock));
}
}
}
if(!empty($ext_variants))
$data = date("mdyHis");
}
$key = $this->getKey(array('variant_id'=>$variant_id, 'add_variants'=>$ext_variants, 'date'=>$data));
$amount = max(1, $amount);
if(isset($_SESSION['shopping_cart'][$key]))
$amount = max(1, $amount+$_SESSION['shopping_cart'][$key]['amount']);
// Если товар существует, добавим его в корзину
if(!empty($variant) && ($variant->stock>0) )
{
// Не дадим больше чем на складе
$amount = min($amount, $variant->stock);
$_SESSION['shopping_cart'][$key] = array('variant_id' => $variant_id,
'amount' => intval($amount),
'add_variants' => $ext_variants
);
}
}
function getKey($prop_list)
{
$ret = false;
if (!empty($prop_list)) {
ksort($prop_list);
$ret = md5(serialize($prop_list));
}
return $ret;
}
Где
Не пойму в чем проблема.
Сам ход событий такой, через аякс отправляем
// Аяксовая корзина (добавление варианта)
$(document).on("submit", "form.variants", function (e) {
e.preventDefault();
vars = $(this).serializeArray().filter(item => +item.value);
console.log(vars);
$.ajax({
url: "ajax/cart.php",
data: vars,
dataType:'json',
success:function(data){
$('#cart_informer').html(data.desktop);
$('#cart_informer_main').html(data.main);
$('#cart_informer_mini').html(data.mini);
$('#cart_informer_mobile').html(data.mobile);
$.fancybox.close();
}
});
});
Дальше через ajax/cart.php
// Добавляем товар
$simpla->cart->add_item($variant, $amount, $add_variants);
Выполняем функцию которая выше под спойлером