Всем привет!
Есть корзина:
<?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><?= $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?>
Есть js добавления
$('.add-to-cart').on('click', function (e) {
e.preventDefault();
var id = $(this).data('id'),
qty = $(this).prev('.js-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!');
}
});
});
Добавление если уже в корзине
$('#cart .modal-body').on('click', '.add-to-cart', function () {
var id = $(this).data('id'),
qty = $(this).prev('.js-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!');
}
});
});
Полностью удаление позиции
$('#cart .modal-body').on('click', '.del-item', function(){
var id = $(this).data('id');
$.ajax({
url: '/cart/del-item',
data: {id: id},
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'));
}
public function actionClear(){
$session =Yii::$app->session;
$session->open();
$session->remove('cart');
$session->remove('cart.qty');
$session->remove('cart.sum');
$this->layout = false;
return $this->render('cart-modal', compact('session'));
}
public function actionDelItem(){
$id = Yii::$app->request->get('id');
$session =Yii::$app->session;
$session->open();
$cart = new Cart();
$cart->recalc($id);
$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'];
$sumMinus = $_SESSION['cart'][$id]['qty'] * $_SESSION['cart'][$id]['price'];
$_SESSION['cart.qty'] -= $qtyMinus;
$_SESSION['cart.sum'] -= $sumMinus;
unset($_SESSION['cart'][$id]);
}
Как сделать так, чтоб при количестве в 4 штуки удалить 1 единицу, а не всю позицию?