我有以 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' : '' }}>
但是它们都不起作用。
尝试这样:
$items= json_decode(Items::pluck('items'));
然后您可以使用
in_array()
方法找到您要检查的精确匹配项。
<input type="checkbox" name="items[]" value="cars" {{ in_array('cars',$items) ? 'checked' : '' }}>
我认为你需要先获取所有物品
$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'));
你需要这样的东西:
<?php $items = json_decode($items); ?>
<input type="checkbox" name="items[]" value="cars" {{ array_has($items, "cars") ? 'checked' : '' }}>