在 Laravel 中 POST 多个同名字段

Kel*_*nga 4 php laravel

我正在尝试创建一个购物车,我想发布多个具有相同名称的字段并处理它们

<?php foreach($datacart as $datacart) { ?>
<form method="post" action="/update-cart">

<input type="hidden" name="rowid" value="{{$datacart->rowid}}">
<input type="text" name="quantity" value="{{$datacart->quantity}}">

 <?php }>

<input type="submit" value="update">

</form>


public function update_cart(request $request){

   $rowId = $request->rowid;
   $quantity = $request->quantity;



   Cart::update($rowId, $quantity);

}
Run Code Online (Sandbox Code Playgroud)

首先使用 foreach 显示所有产品。那么每个项目都有一个隐藏的 rowid 和一个数量。

下面的代码显示了我的控制器。但使用此代码,它仅更新一项(最后一项)。但我想分别更新每个产品的数量

忘了说了,我使用https://github.com/Crinsane/LaravelShoppingcart作为我的购物车插件

nak*_*kov 6

首先让我们改进你的blade文件,你可以使用blade语法而不是PHP,所以这里:

<form method="post" action="/update-cart">
    @csrf

    @foreach($datacart as $datacart)
        <input type="hidden" name="rowid[]" value="{{$datacart->rowid}}">
        <input type="text" name="quantity[]" value="{{$datacart->quantity}}">
    @endforeach

    <input type="submit" value="update">
</form>
Run Code Online (Sandbox Code Playgroud)

因此请注意,输入元素的名称属性现在接受多个值作为数组。然后要在控制器中处理它,您可以执行以下操作:

public function update_cart(Request $request) {

    foreach ( $request->rowid as $index => $id ) {
       Cart::find($id)->update(['quantity' => $request->quantity[$index]]);
    }

}
Run Code Online (Sandbox Code Playgroud)

- 编辑

刚刚测试了update对模型的调用,因为静态方法不起作用。