为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
长风秋雁 2023-08-19 17:53:20
$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.phpRoute::get('/cart/checkout/{cartItems}', 'CartController@checkout')->name('cart.checkout')->middleware('auth');CartController.phppublic 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)
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

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


更新您的路线从get到post


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');

}


查看完整回答
反对 回复 2023-08-19
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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

结帐方法将如下所示:

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


查看完整回答
反对 回复 2023-08-19
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信