Encoderast
@Encoderast
frontend пытается что-то делать в backend

Указание кол-ва добавления товаров в корзину — как сделать?

Начну с картинки, чтоб было понятней
5af03b724372f727232296.jpeg

Пытаюсь указать какое кол-во добавлять в корзину, но все кол-во указывается только у первого товара. Если у первого указал количество 4, а у третьему 1 и добавил третий, то все равно к третьему товару добавится 4 штуки.

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

- - -

Код:

Вьюха
<?php foreach ($pizza as $one): $i++?>
                            <input type="text" value="1" id="qty">
                            <a href="<?= \yii\helpers\Url::to(['cart/add', 'id' => $one->id]) ?>" data-id="<?= $one->id ?>" type="submit" class="product__button button button_primary-outline add-to-cart">
                                <span class="button__inc">В корзину</span>
                            </a>
                        <?php endforeach; ?>


$('.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){
                if(!res) alert('Ошибка!');
                showCart(res);
            },
            error: function(){
                alert('Error!');
            }
        });
    });


Контроллер:
public function actionAdd(){
        $id = Yii::$app->request->get('id');
        $qty = (int)Yii::$app->request->get('qty');
        $qty = !$qty ? 1 : $qty;
        $product = Product::findOne($id);
        if(empty($product)) return false;
        $session =Yii::$app->session;
        $session->open();
        $cart = new Cart();
        $cart->addToCart($product, $qty);
        if( !Yii::$app->request->isAjax ){
            return $this->redirect(Yii::$app->request->referrer);
        }
        $this->layout = false;
        return $this->render('cart-modal', compact('session'));
    }
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
@tyzberd
<input type="text" value="1" class="js-qty" id="qty">

qty = $(this).prev('.js-qty').val();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Arik
1. Действие через GET-метод – плохо
2. id в html должен быть уникальный
3. Через JS вы знаете какую ссылку нажали, значит можно узнать соседа инпут с кол-вом
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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