我有保存在json中的数据库记录。在编辑表单中,我希望选中这些复选框,如果值保存在数据库中。
数据库值
| ID | items |
|----|----------------------------|
| 1 | ["cars","bikes","planes"] |
| 2 | ["fruits", "vegetables"] |
表格
<input type="checkbox" name="items[]" value="cars">
<input type="checkbox" name="items[]" value="planes">
控制器
$items= Items::pluck('items');
return view('edit', compact('items'));
我试过
<input type="checkbox" name="items[]" value="cars" {{ json_decode($items),"cars" ? 'checked' : '' }}>
和
<input type="checkbox" name="items[]" value="cars" {{ $items == "cars" ? 'checked' : '' }}>
但他们都没有工作。
答案 0 :(得分:0)
试试这样:
$items= json_decode(Items::pluck('items'));
然后您可以使用in_array()
方法查找要检查的完全匹配项。
<input type="checkbox" name="items[]" value="cars" {{ in_array('cars',$items) ? 'checked' : '' }}>
答案 1 :(得分:0)
我认为您需要先获取所有项目
$items= Items::select('items')->get();
然后合并所有列包含项目
$new_items = []
$items.map(function($item){
array_merge($new_items,item)
}
应该在1个数组
上生成$new_items = ["cars","bikes","planes","fruits", "vegetables"]
然后你可以在前端使用Haider Ali的答案
return view('edit', compact('new_items'));
答案 2 :(得分:0)
你需要这样的东西:
<?php $items = json_decode($items); ?>
<input type="checkbox" name="items[]" value="cars" {{ array_has($items, "cars") ? 'checked' : '' }}>