Задать вопрос
f_society
@f_society
по граблям новичка

Как вывести данные qty из session ajax, без перезагрузки страницы?

Пишу интернет магазин на 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>

автоматически изменялся без перезагрузки страницы.
Помогите пожалуйста!!!
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы