Laravel - 如果json值保存在数据库中,则选中复选框

时间:2018-04-23 11:46:23

标签: html laravel checkbox

我有保存在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' : '' }}>

但他们都没有工作。

3 个答案:

答案 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' : '' }}>