繁体   English   中英

Laravel 错误:调用未定义的方法 App\Cart::items()

[英]Laravel errors: call to undefined method App\Cart::items()

我正在 Laravel 6.1 中开发购物车项目。 当我单击添加按钮时,值增加了 1,但是当我单击同一个按钮两次时,我收到以下错误:

Symfony\Component\Debug\Exception\FatalThrowableError 调用未定义的方法 App\Cart::items() http://localhost:8000/add-to-cart/3

购物车.php

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;
    }
}

Controller

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);
        $cart = Session::has('cart') ? Session::get('cart') : null;
        if (!$cart) {
            $cart = new Cart($cart);
        }
        $cart->add($product, $product->id);
        Session::put('cart', $cart);

        return redirect()->route('product.index');
    }

    public function getCart()
    {
        if (!Session:: has('cart')) {
            return view('shop.shopping-cart', ['products' => null]);
        }
        $oldCart = Session::get('cart');
        $cart = new Cart($oldCart);

        return view('shop.shopping-cart', ['products' => $cart->items, 'totalPrice' => $cart->totalPrice]);
    }
}

错误截图

埃尔

您正在使用 function 调用而不是属性。

你应该改变:

$storedItem =$this->items($id);

进入

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

访问具有给定 $id 的元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM