Php 在Laravel中发布多个同名字段
我正在尝试创建一个购物车,我想发布多个同名字段并处理它们Php 在Laravel中发布多个同名字段,php,laravel,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="{{$d
<?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);
}
因此,您需要做的是在html标记中定义输入是如下所示的数组:
public function update_cart(request $request) {
foreach ($request->rowid as $index => $rowid) {
$quantity = $request->quantity[$index];
Cart::where('id', $rowId)
->update([
'quantity' => $quantity
]);
}
}
i、 e.在输入元素名称旁边使用方括号[]
首先,让我们改进您的刀片文件,您可以使用刀片语法而不是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>
--编辑
刚刚测试了在模型上调用update
,因为静态方法不起作用。您需要在名称后面追加[]
然后在控制器方法中
公共功能更新\u购物车(请求$Request){
对于($i=0;$iinput('rowid'));$i++){
$cart=cart::find($request->input('rowid')[$i];
$cart->quantity=$request->input('quantity')[$i];
}
}
谢谢大家。这段代码对我很有用。我使用带有索引的for循环
<input type="hidden" name="rowid[]" value="{{$datacart->rowid}}">
<input type="text" name="quantity[]" value="{{$datacart->quantity}}">
,
for($i=0;$iinput('rowid'));$i++){
购物车::更新($request->rowid[$i],$request->quantity[$i]);
}
这只适用于id
和quantity
字段在Cart
模型中标记为filleble
的情况-您应该接受一个对您有帮助的答案,因为所有的建议都是您刚才展示的。而不是回答您从其他答案中获得的帮助。
public function update_cart(Request $request) {
foreach ( $request->rowid as $index => $id ) {
Cart::find($id)->update(['quantity' => $request->quantity[$index]]);
}
}
<input type="hidden" name="rowid[]" value="{{$datacart->rowid}}">
<input type="text" name="quantity[]" value="{{$datacart->quantity}}">
for ($i = 0; $i < count($request->input('rowid')); $i++){
Cart::update($request->rowid[$i], $request->quantity[$i]);
}