【问题标题】:how to update a whole (session) shopping cart not a single item in laravel如何在laravel中更新整个(会话)购物车而不是单个项目
【发布时间】:2018-03-08 08:48:03
【问题描述】:

我为得到这份工作而奋斗了一段时间!!!

我在 laravel 中创建了一个购物车

这是购物车图片:

我希望用户能够编辑“数量”字段,“更新购物车”按钮应该计算项目“总计”和最终“总计”,但我无法使用它

这是我的 updatecart 方法;

public function updateCart(Request $request)
{
    $cart = $request->session()->get('cart');

    if(!$cart){
        $cart = new Cart($cart);
    }

    $i = 0;
    foreach($cart->items as $item){
        $qty = $request->input($item['item']['id']);
        $item['qty'] = $qty;
        $item['total'] = $item['price'] * $qty;
        $i++;
    }
    $cart->totalQty = array_sum($request->all());

    $request->session()->put('cart', $cart);
    //return $cart->items;
    return redirect()->route('cart');
}

还有我的刀片模板;

<form method="post" action="{{route('updateCart')}}">
  {{ csrf_field() }}
  <table class="table table-hover">
    <thead>
      <tr>
        <th class="text-center">Product</th>
        <th class="text-center">Qty</th>
        <th class="text-center">Rate</th>
        <th class="text-center">Subtotal</th>
        <th> </th>
      </tr>
    </thead>
    <tbody>
      @foreach($items as $item)


      <tr>
        <td class="col-sm-8 col-md-6 text-center">
          <div class="media">
            <a class="thumbnail pull-left" href="#"> <img class="media-object" src="{{asset('storage/'.$item['image'])}}" style="width: 100px; height: 72px;"> </a>
            <div class="media-body">
              <h4 class="media-heading"><a href="#">{{$item['item']['title']}}</a></h4>
            </div>
          </div>
        </td>
        <td class="col-sm-1 col-md-1" style="text-align: center">
          <input type="number" class="form-control input-sm" name="{{$item['item']['id']}}" value="{{old($item['item']['id']) ? old($item['item']['id']) : $item['qty']}}">
        </td>
        <td class="col-sm-1 col-md-1 text-center">&#x20a6;{{$item['price']}}</td>
        <td class="col-sm-1 col-md-1 text-center"><strong>&#x20a6;{{$item['total']}}</strong></td>
        <td class="col-sm-1 col-md-1">
          <a href="#"> <button type="button" class="btn btn-danger">
                                    <span class="fa fa-remove"></span> Remove
                                </button>
          </a>
        </td>
      </tr>
      @endforeach

      <tr>
        <td> </td>
        <td> </td>
        <td>
          <h3>Total</h3>
        </td>
        <td class="text-center">
          <h3><strong>&#x20a6;{{$total}}</strong></h3>
        </td>
        <td></td>
      </tr>
      <tr>
        <td> </td>
        <td> </td>
        <td> <button type="submit" class="btn btn-default">
                                <span class="glyphicon glyphicon-shopping-cart"></span>Update shopping Cart
                            </button> </td>
        <td>
          <a href="/"> <button type="button" class="btn btn-default">
                                <span class="glyphicon glyphicon-shopping-cart"></span> Continue Shopping
                            </button>
          </a>
        </td>
        <td>
          <a href={{route( 'checkout')}} class="btn btn-success" role="button">
                           Checkout <span class="glyphicon glyphicon-play"></span>
                        </a>
        </td>
      </tr>
    </tbody>
  </table>
</form>

提前谢谢你!

已编辑:

请注意,我不想更新每个商品的购物车,而是更新整个购物车!

【问题讨论】:

  • 为什么不从请求中获取信息(当您有表单时)而不是从会话中获取信息?
  • @Maraboc 购物车存储在会话中!(或者我不明白)
  • 只是为了测试试试这个:用name="test"替换name="{{$item['item']['id']}}",在updateCart方法中:dd( $request-&gt;input('test');)你会得到数量的值。在购物车中尝试一种产品
  • @Maraboc 如果我这样做,我如何个性化购物车中的商品并从表单中分配其价值。

标签: php laravel shopping-cart


【解决方案1】:

您可以在加入购物车之前使用session()-&gt;forget('cart')

$cart = $request->session()->forget('cart');

if(!$cart){
    $cart = new Cart($cart);
}

$i = 0;
foreach($cart->items as $item){
    $qty = $request->input($item['item']['id']);
    $item['qty'] = $qty;
    $item['total'] = $item['price'] * $qty;
    $i++;
}
$cart->totalQty = array_sum($request->all());

$request->session()->put('cart', $cart);

在将插入再次删除到购物车后。它适用于您的场景

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多