Пишу интернет магазин на yii2.
Осталось сделать так чтобы при добавлении изменялось количество товара рядом с иконкой от корзины.
Сами товары добавляются аяксом. С этим порядок.
Иконка корзины находится в виде, фиксированная в право.
Я добавил в вид
$session = Yii::$app->session;
$session->open();
И вот сама иконка корзины
<div class="fix_cart" onclick="return getCart()"id="fix_cart">
<li class="header-cart dropdown default-dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true">
<div class="header-btns-icon">
<i class="fa fa-shopping-cart"></i>
<span class="qty"><?=$_SESSION['cart.qty']?></span>
</div>
</a>
</li>
</div>
Это модель записи в сессию:
class Cart extends ActiveRecord
{
public function addToCart($product, $qty = 1){
if (isset($_SESSION['cart'][$product->id])){
$_SESSION['cart'][$product->id]['qty'] += $qty;
}else{
$_SESSION['cart'][$product->id] = [
'qty' => $qty,
'name' => $product->title,
'url' => $product->chpu,
'price' => $product->price,
'img' => $product->images->filePath
];
}
$_SESSION['cart.qty'] = isset($_SESSION['cart.qty']) ? $_SESSION['cart.qty'] + $qty : $qty;
$_SESSION['cart.sum'] = isset($_SESSION['cart.sum']) ? $_SESSION['cart.sum'] + $qty * $product->price : $qty * $product->price;
}
public function recalc($id){
if(!isset($_SESSION['cart'][$id])) return false;
$qtyMinus = $_SESSION['cart'][$id]['qty'];
$sumMinus = $_SESSION['cart'][$id]['qty'] * $_SESSION['cart'][$id]['price'];
$_SESSION['cart.qty'] -= $qtyMinus;
$_SESSION['cart.sum'] -= $sumMinus;
unset($_SESSION['cart'][$id]);
}
}
Вот сама функция добавления товара:
$('.add-to-cart').on('click', function(e){
e.preventDefault();
var id = $(this).data('id'),
qty = $('#qty').val();
$.ajax({
url: '/cart/add',
data: {id: id, qty: qty},
type: 'GET',
success: function(res) {
// showCart(res);
},
error: function () {
alert('Error');
}
});
});
Изначально при добавлении в корзину выходило модальное окно со списком товара
showCart(res);
Так-как это неудобно пользователям, я за комментировал модальное окно
и сделал просто анимацию в сторону корзины + кол-во товара рядом с иконкой корзины
Но без перезагрузки страницы кол-во из сессии не обновляется
Надо чтобы при добавлении товара
<span class="qty"><?=$_SESSION['cart.qty']?></span>
автоматически изменялся без перезагрузки страницы.
Помогите пожалуйста!!!