Php Laravel购物车Falied to update the quentity

问题描述 投票:0回答:1

我正在开发laravel购物车项目。我正在尝试将产品投放到购物车中。但是问题是当我单击添加按钮时,它仅添加了一次。当我单击“购买”按钮时,它从不增加项目数量。我真的很困惑。

这是我的Header.blade.php代码。

<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">Brand</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#"><i class="fa fa-shopping-cart" aria-hidden="true"></i> Shopping Cart
                <span class="badge">{{ Session::has('cart') ? Session::get('cart')->totalQty : ''  }}</span>
                </a>
                </li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-user" aria-hidden="true"></i> User Mangemetn <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                    @if(Auth:: check())
                    <li><a href="{{ route('user.profile')}}">User Profile</a></li>
                    <li><a href="{{ route('user.logout')}}">Logout</a></li>
                    @else
                    <li><a href="{{ route('user.signup')}}">Sign Up</a></li>
                   <li><a href="{{ route('user.signin')}}">Sign In</a></li>
                    @endif


                        <li role="separator" class="divider"></li>

                    </ul>
                </li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

这里是productController代码。

<?php

namespace App\Http\Controllers;
use App\Product;
use Session;
use App\Cart;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function getIndex(){
        $products = Product::all();
        return view('shop.index',['products' => $products]);
    }

    public function getAddToCart(Request $request, $id)
    {
        $product= Product::find($id);
        $oldCart= Session::has('cart') ? Session::get('cart') : null;
        $cart = new Cart($oldCart);
        $cart->add($product,$product->id);

        $request->session()->put('cart',$cart);
        //dd($request ->session()->get('cart')); 
        return redirect()->route('product.index');

    }
}

这里是cart.php文件。

<?php
namespace App;


class Cart
{

    public $items=null;
    public $totalQty=0;
    public $totalPrice =0;

    public function _construct($oldCart)
    {
        if($oldCart)
        {
            $this->items = $oldCart->items;
            $this->totalQty = $oldCart->totalQty;
            $this->totalPrice = $oldCart->totalPrice;

        }
    }
    public function add($item, $id)
    {
       $storedItem= ['qty' =>0, 'price' => $item->price,'item'=>$item];
       if($this->items)
       {

        if(array_key_exists($id,$this->items)){
            $storedItem =$this->items($id);

        }

       }
       $storedItem['qty']++;
       $storedItem['price'] = $item->price * $storedItem['qty'];
       $this->items[$id] = $storedItem;
       $this->totalQty++;
       $this->totalPrice += $item->price;
    }
}

这里是我运行应用程序时的屏幕截图。enter image description here

php laravel shopping-cart
1个回答
0
投票

在cart.php文件中,检查array_key_exists是否存在,然后在$storedItem变量中添加项目。因此,我认为您应该尝试以下代码。

if(array_key_exists($id,$this->items)){

    $storedItem =$this->items[$id];

}

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.