php 如何在Laravel中使用从数据库中获取的数据检查复选框

mi7gmzs6  于 2024-01-05  发布在  PHP
关注(0)|答案(2)|浏览(164)

我在Laravel中检索数据并使用它来检查复选框时遇到问题。我希望在打开编辑页面时根据数据库上的记录检查复选框。

编辑视图/刀片

  1. @php
  2. $productstatus = json_decode($product-\>status);
  3. @endphp
  4. <div>
  5. <label for="status" class="control-label col-sm-2">Product Status</label>
  6. @foreach($status as $status)
  7. <input type="checkbox" name="status[]" value="{{$status->status}}" @if(in_array($status, $productstatus)) checked @endif> <label>{{$status->status}}</label>
  8. @endforeach
  9. </div>
  10. <div class="clearfix"></div>

字符串

控制器

  1. public function edit(Product $product)
  2. {
  3. $countries = Country::all();
  4. $status = Status::all();
  5. $allStatus = Product::pluck('status')->toArray();
  6. return view('products.edit',
  7. ['product' => $product, 'countries' => $countries, 'status' => $status, 'allStatus' => $allStatus]);
  8. }
  9. public function update(Request $request, $id)
  10. {
  11. $data = $request->validate([
  12. 'name' => 'required',
  13. 'qty' => 'required|numeric',
  14. 'price' => 'required|decimal:0,2',
  15. 'category' => 'required',
  16. 'country' => 'required',
  17. 'status' => 'nullable',
  18. 'description' => 'nullable'
  19. ]);
  20. $product = product::where('id', $id)
  21. ->update([
  22. 'name' => $request->name,
  23. 'qty' => $request->qty,
  24. 'price' => $request->price,
  25. 'category' => $request->category,
  26. 'country' => $request->country,
  27. 'status' => json_encode($request->input('status')),
  28. 'description' => $request->description
  29. ]);
  30. return redirect(route('product.index'))->with('success', 'Product has been updated Successfully!');
  31. }


I want the tickboxes to be ticked based on the values when the edit page is loaded
Here is the array of strings in the database
我试图在将字符串与值进行比较之前将其更改为数组,但无济于事。

zxlwwiss

zxlwwiss1#

在视图文件中,您将对象$status与数组$productstatus进行比较。这将无法正常工作。您应该将$status对象的status属性与$productstatus数组进行比较。

  1. @php
  2. $productstatus = json_decode($product->status);
  3. @endphp
  4. <div>
  5. <label for="status" class="control-label col-sm-2">Product Status</label>
  6. @foreach($status as $status)
  7. <input type="checkbox" name="status[]" value="{{$status->status}}" @if(in_array($status->status, $productstatus)) checked @endif> <label>{{$status->status}}</label>
  8. @endforeach
  9. </div>
  10. <div class="clearfix"></div>

字符串
在此代码中,@if(in_array($status->status, $productstatus)) checked @endif检查$status对象的status属性是否在$productstatus数组中。如果是,则将checked属性添加到复选框输入。

kxeu7u2r

kxeu7u2r2#

您在指定的程式码行中有错误。
转换此

  1. $productstatus = json_decode($product-\>status);

字符串

  1. $productstatus = json_decode($product->status);


然后此复选框html

  1. <input type="checkbox" name="status[]"
  2. value="{{$status->status}}"
  3. @if(in_array($status, $productstatus)) checked @endif>


  1. <input type="checkbox" name="status[]"
  2. value="{{$status->status}}"
  3. @if(in_array($status->status, $productstatus)) checked @endif>

展开查看全部

相关问题