@Heckfy325
Начинающий программист. Простите за глупые вопросы

Как реализовать изменение количества товаров в корзине?

Делаю корзину пользователя, с возможностью изменения количества товара:
5e7af633b6730073729352.png
Как показана на картинке у каждого товара есть своё определенное количество. По идеи когда покупатель изменяет количество товара он нажимает на кнопку желтую кнопку в соответствующей строке с товаром для сохранения (это все происходит без обновления страницы). Проблема в том что мне приходят данные только первого товара (т.е. ID приходит правильно, но QTY приходит первого товара). Соответственно количество сохраняется не верно. Как я понял у все желтые кнопки отправляют данные 1 товара. Думаю что нужно как то привязать каждую кнопку к соответствующему товару, наверно...

вид:
<td class="cart-table__column cart-table__column--quantity" data-title="Quantity">
      <div class="input-number">
                 <input class="form-control input-number__input qty" type="number" min="1" value="<?=$item['qty']?>">
                 <div class="input-number__add"></div>
                <div class="input-number__sub"></div>
        </div>
</td>


Ajax
//update cart
    $('.update-cart').on('click', function (e) {
        e.preventDefault();
        var id = $(this).data('id'),
            qty = $('.qty').val();
        console.log(id, qty);
        $.ajax({
            url: '/cart/update.html',
            data: {id: id, qty: qty},
            type: 'GET',
            success: function(res){
                if(!res) alert('Ошибка!');
                showCart(res);
            },
            error: function(){
                alert('Error!');
            }
        });
    });


Контроллер:
public function actionUpdate($id){

        $qty = (int)Yii::$app->request->get('qty');
        debug($id);
        debug($qty);


//        return $this->render('cart-delete');
    }


debug():
5e7afb3b1080b087135228.png
  • Вопрос задан
  • 1064 просмотра
Решения вопроса 1
Eridani
@Eridani
Мимо проходил
Дайте каждому товару data-id, при событии смены кол-ва, берите данный ID товара и отправляйте в обработчик, в обработчике меняйте кол-во у товара с данным ID (в сессии), потом возвращайте ID измененного элемента и его измененное кол-во json_encode'ом, и в теле функции success аякса принимайте ID и кол-во и обращайтесь к блоку с этим ID товара, который вернулся из обработчика, дабы вставить новое кол-во и сумму
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Groshik_BY
var id = $(this).data('id'),
qty = $('.qty').val();

Если я правильно понял, то элементы qty находятся в элементах update-cart и это значит, что нужно указать элемент qty более конкретно (не очень разбираюсь в jQuery, но наверное так)
qty =$(this).find( $(".qty") ).val();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы