0

$cartItems包含数据库中的所有产品行,我在刀片文件中使用它。

我想$cartItems将此刀片文件中的这个传回控制器

注意:$cartItems来自index()控制器中的功能,如下所示。

$cartItems = DB::table('products')->whereIn('id', $cartItemsArray)->get();
return view('cart.index', compact('cartItems')

下面是我的代码。

index.blade.php

<a href="{{route('cart.checkout',$cartItems)}}" class="site-btn">Proceed to checkout</a>

web.php

Route::get('/cart/checkout/{cartItems}', 'CartController@checkout')->name('cart.checkout')->middleware('auth');

CartController.php

public function checkout($cartItems)
{
   dd($cartItems);
   return view('cart.checkout');
}

我得到的错误是,

[Route: cart.checkout] [URI: cart/checkout/{cartItems}] 缺少必需的参数。(查看:E:\github\LARAVEL\Deal-Ocean\resources\views\cart\index.blade.php)

4

2 回答 2

1

您可以使用表单将数据发送回服务器

更新您的路线从getpost

Route::post('/cart/checkout', 'CartController@checkout')->name('cart.checkout')->middleware('auth');

使用表单将数据发布到服务器。您也可以将任何附加数据与请求一起传递。

<form method="post" action="/cart/checkout">
@foreach($cartItems as $item)
    <input name="cartItems[]" value="{{ $item->id }}"
@endforeach
<button class="site-btn">Proceed to checkout</button>
</form>

并在您的控制器中用于Request访问数据

public function checkout(Request $request)
{
    $cartItems = DB::table('products')->whereIn('id', $request->get($cartItems))->get();
   dd($cartItems);
   return view('cart.checkout');
}

如果您想继续获取请求,您应该可以执行以下操作

作为$cartItems产品的集合。因此,您可以发送产品 id 并使用请求中的 id 查询产品。

<a href="{{ route('cart.checkout', ['cartItems' => $cartItems->pluck('id')->toArray()]) }}" 
    class="site-btn">Proceed to checkout</a>

更新控制器

public function checkout(Request $request)
{
    $cartItems = DB::table('products')->whereIn('id', $request->get($cartItems))->get();
   dd($cartItems);
   return view('cart.checkout');
}
于 2020-07-23T14:53:49.077 回答
0

为什么在 CartController的checkout方法中使用index()方法的相同代码逻辑。

结帐方法将如下所示:

   $cartItems = DB::table('products')->whereIn('id', $cartItemsArray)->get();
   return view('cart.checkout', compact('cartItems');
于 2020-07-23T12:46:55.897 回答