Всем привет!
Визуально вот такая штука)
Есть вывод товаров в модальном окне
<?php foreach($session['cart'] as $id => $item):?>
<tr>
<td><?= \yii\helpers\Html::img($item['img'], ['alt' => $item['name'], 'height' => 50]) ?></td>
<td><?= $item['name']?></td>
<td>
<span data-id="<?= $id ?>" type="submit" class="del-n"><span class="button__inc">-</span></span>
<?= $item['qty']?>
<span data-id="<?= $id ?>" type="submit" class="add-to-cart"><span class="button__inc">+</span></span></td>
<td><?= $item['price']?></td>
<td><span data-id="<?= $id?>" class="glyphicon glyphicon-remove text-danger del-item" aria-hidden="true"></span></td>
</tr>
<?php endforeach?>
.del-n
- должен удалять 1 единицу товара, но не удаляет
.add-to-cart
- прибавляет 1 ед. товара, сделал, работает
А это js, контроллеры, модели на удаление, не могу понять что тут надо сделать
Проблема в том, что при удалении он удаляет позицию товара полностью, вне зависимости 4 шт указано или 1
JS$('#cart .modal-body').on('click', '.del-n', function () {
var id = $(this).data('id'),
qty = $(this).prev('.js-qty').val();
$.ajax({
url: '/cart/del-pr',
data: {id: id, qty: qty},
type: 'GET',
success: function(res){
if(!res) alert('Ошибка!');
showCart(res);
},
error: function(){
alert('Error!');
}
});
});
Контроллерpublic function actionDelPr(){
$id = Yii::$app->request->get('id');
$qty = (int)Yii::$app->request->get('qty');
$session =Yii::$app->session;
$session->open();
$cart = new Cart();
$cart->recalcp($id, $qty);
$this->layout = false;
return $this->render('cart-modal', compact('session'));
}
Модельpublic function recalcp($id){
if(!isset($_SESSION['cart'][$id])) return false;
$qtyMinus = $_SESSION['cart'][$id]['qty'] === 1;
$sumMinus = $_SESSION['cart'][$id]['price'];
$_SESSION['cart.qty'] -= $qtyMinus;
$_SESSION['cart.sum'] -= $sumMinus;
unset($_SESSION['cart'][$id]);
}