我在检索数据并使用它来检查 Laravel 中的复选框时遇到问题。我希望当打开编辑页面时,将根据数据库中的记录选中复选框。
编辑视图页面:
@php
$productstatus = json_decode($product-\>status);
@endphp
<div>
<label for="status" class="control-label col-sm-2">Product Status</label>
@foreach($status as $status)
<input type="checkbox" name="status[]" value="{{$status->status}}" @if(in_array($status, $productstatus)) checked @endif> <label>{{$status->status}}</label>
@endforeach
</div>
<div class="clearfix"></div>
控制器页面:
public function edit(Product $product){
$countries = Country::all();
$status = Status::all();
$allStatus = Product::pluck('status')->toArray();
return view('products.edit', ['product' => $product, 'countries' => $countries, 'status' => $status, 'allStatus'=>$allStatus]);
}
public function update(Request $request, $id){
$data = $request->validate([
'name'=> 'required',
'qty'=> 'required|numeric',
'price'=> 'required|decimal:0,2',
'category' => 'required',
'country' => 'required',
'status' => 'nullable',
'description' => 'nullable'
]);
$product = product::where('id', $id)
->update([
'name' => $request->name,
'qty' => $request->qty,
'price' => $request->price,
'category' => $request->category,
'country' => $request->country,
'status' => json_encode($request->input('status')),
'description' => $request->description ]);
return redirect(route('product.index'))->with('success', 'Product has been updated Successfully!');
}
谢谢您的帮助!
我尝试将字符串更改回数组,然后再尝试将其与值进行比较,但无济于事。
在视图文件中,您将对象
$status
与数组 $productstatus
进行比较。这不会按预期工作。您应该将 status
对象的 $status
属性与 $productstatus
数组进行比较。
@php
$productstatus = json_decode($product->status);
@endphp
<div>
<label for="status" class="control-label col-sm-2">Product Status</label>
@foreach($status as $status)
<input type="checkbox" name="status[]" value="{{$status->status}}" @if(in_array($status->status, $productstatus)) checked @endif> <label>{{$status->status}}</label>
@endforeach
</div>
<div class="clearfix"></div>
在此代码中,
@if(in_array($status->status, $productstatus)) checked @endif
检查status
对象的$status
属性是否在$productstatus
数组中。它将 checked
属性添加到复选框输入(如果是)。