如何在 Laravel 中将集合或数组从 Blade 文件传递​​到控制器?

$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)


长风秋雁
浏览 78回答 2
2回答

临摹微笑

您可以使用表单将数据发送回服务器更新您的路线从get到postRoute::post('/cart/checkout', 'CartController@checkout')->name('cart.checkout')->middleware('auth');使用表单将数据发布到服务器。您也可以随请求一起传递任何附加数据。<form method="post" action="/cart/checkout">@foreach($cartItems as $item)&nbsp; &nbsp; <input name="cartItems[]" value="{{ $item->id }}"@endforeach<button class="site-btn">Proceed to checkout</button></form>并在您的控制器中用于Request访问数据public function checkout(Request $request){&nbsp; &nbsp; $cartItems = DB::table('products')->whereIn('id', $request->get($cartItems))->get();&nbsp; &nbsp;dd($cartItems);&nbsp; &nbsp;return view('cart.checkout');}如果您想继续处理获取请求,您应该能够执行以下操作就像$cartItems产品的集合一样。因此,您可以发送产品 ID 并使用请求中的 ID 查询产品。<a href="{{ route('cart.checkout', ['cartItems' => $cartItems->pluck('id')->toArray()]) }}"&nbsp;&nbsp; &nbsp; class="site-btn">Proceed to checkout</a>更新控制器public function checkout(Request $request){&nbsp; &nbsp; $cartItems = DB::table('products')->whereIn('id', $request->get($cartItems))->get();&nbsp; &nbsp;dd($cartItems);&nbsp; &nbsp;return view('cart.checkout');}

慕盖茨4494581

为什么在CartController中的checkout方法中使用与index()方法相同的代码逻辑。结帐方法将如下所示:&nbsp;&nbsp;&nbsp;$cartItems&nbsp;=&nbsp;DB::table('products')->whereIn('id',&nbsp;$cartItemsArray)->get(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;view('cart.checkout',&nbsp;compact('cartItems');
打开App,查看更多内容
随时随地看视频慕课网APP