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

问题描述 投票:0回答:3

我有以 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' : '' }}>

但是它们都不起作用。

php json laravel checkbox laravel-blade
3个回答
1
投票

尝试这样:

$items= json_decode(Items::pluck('items'));

然后您可以使用

in_array()
方法找到您要检查的精确匹配项。

<input type="checkbox" name="items[]" value="cars" {{ in_array('cars',$items) ? 'checked' : '' }}>

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'));

0
投票

你需要这样的东西:

<?php $items = json_decode($items); ?>


<input type="checkbox" name="items[]" value="cars" {{ array_has($items, "cars") ? 'checked' : '' }}>
© www.soinside.com 2019 - 2024. All rights reserved.