首页 > 解决方案 > 传递给 Laravel 函数的参数太少

问题描述

我是 Laravel 的新手,正在尝试创建添加到购物车的功能。但是当我点击我设置的“添加到购物车”图标/按钮时,我收到了这个错误。

Too few arguments to function App\Http\Controllers\ProductController::getAddToCart(), 1 passed and exactly 2 expected

我见过很多类似的问题,但大多数答案看起来很复杂,似乎与我的问题不相似。同样,我是 Laravel 的新手,需要最简单的解释。下面是我的 ProductController 和路由代码

产品控制器:

<?php
namespace App\Http\Controllers;

use App\Cart;
use App\Product;
use Illuminate\Http\Request;

use App\Http\Requests;
use Session;

class ProductController extends Controller
{
    public function getProducts()
    {
        $products = Product::all();
        return view('shop', ['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('shop');
    }
}

添加到购物车功能的路线:

Route::get('/add-to-cart', ['uses' => 'ProductController@getAddToCart', 'as' => 'product.addToCart']);

P/S:我正在使用 Laravel 6

标签: phplaravel

解决方案


你需要改变你的路线如下

Route::get('/add-to-cart/{id}', ['uses' => 'ProductController@getAddToCart', 'as' => 'product.addToCart']);

推荐阅读