首页 > 解决方案 > 如何更改购物车 laravel 中的数量?

问题描述

我尝试更改quantity我的cart. 我的代码如下所示:

<div class="form-group">
   <input rowId="{{ $cart->rowId }}" type="number" value="{{ $cart->qty }}" class="form-control prc" required>
</div>

script的是:

$('.form-group').on('input', '.prc', function(){
    var totalSum = 0;
    $('.form-group .prc').each(function()
    {
        var inputVal = $(this).val();
        if ($.isNumeric(inputVal))
        {
            totalSum += parseFloat(inputVal);
        }
    });
    $('#result').text(totalSum);
    var rowId = $(this).attr('rowId');
    var quantity = $(this).val();
    var prevQuantity = $(this).attr('value');
    if ($.isNumeric(quantity) && (quantity != prevQuantity) && (quantity != 0))
    {
        window.location.href = "{{ url('Cart/add') }}"+'/'+rowId+'/'+quantity; 
    }
});

这是我的controller

 public function add($id, $quantity) 
{
    $item = Cart::get($id);
    Cart::update($id, ['qty'=>$quantity]);
    return redirect()->route('Cart.index');
}

但该值并未存储在cart->quantity.

标签: phplaravelcart

解决方案


使用 Ajax 调用来打你的路线。

你的路线应该是这样的:

Route::get('/Cart/add/{rowId}/{qty}','YourController@add');

你的脚本应该是这样的:

$('.form-group').on('input', '.prc', function(){
    var totalSum = 0;
    $('.form-group .prc').each(function()
    {
        var inputVal = $(this).val();
        if ($.isNumeric(inputVal))
        {
            totalSum += parseFloat(inputVal);
        }
    });
    $('#result').text(totalSum);
    var rowId = $(this).attr('rowId');
    var quantity = $(this).val();
    var prevQuantity = $(this).attr('value');
    if ($.isNumeric(quantity) && (quantity != prevQuantity) && (quantity != 0))
    {
        $.ajax({
            type: 'get',
            url: '/Cart/add/'+rowId+'/'+quantity,
            success: function(data){
                if (data == 'success') {                
                    alert('success');
                }
                else{
                    alert('failure');
                }

            },
            error:function(data){

            }
        });
    }
});

注意:我刚刚在此处添加了 Ajax 调用,因此请确保您的脚本进入该 if 循环以正常工作

并使您的控制器像这样:

public function add($id, $quantity) {
    $item = Cart::find($id);
    $item->qty = $quantity;
    $item->save();
    return response('success');
}

希望它会起作用


推荐阅读