【发布时间】:2021-08-30 21:48:58
【问题描述】:
我在使用 Laravel 的多选框时遇到困难,特别是从数据库中读取值并显示这些值以便可以在我的编辑视图中进行编辑。
在我的控制器中,在 store 函数中,我使用 implode 函数将正整数保存到数据库字段中。
这里是内爆函数
$prodmulti = implode(',', $prodmulti);
数据库将这些值存储在一个单元格中,例如
prodmulti
1,2,3
这很好用,我得到了单元格,其中填充了很好的值。 问题是当我希望编辑这些值时。 如果我在此单元格中没有保存任何内容,那么正如预期的那样,我在多选框中没有任何内容,这很好。 如果我在数据库单元格中有 1 个数字,那么再次,没问题,我可以在多选框中看到相应的项目。 如果我在数据库单元格中有 2 个或更多项目,则多选框在编辑视图中显示为空白。这就是我遇到问题的地方。
带有多选框的编辑页面的视图刀片如下所示:
<div class="col-lg-8 col-xl-5">
<div class="form-group">
<select class="js-select2 form-control" name="prodmulti[]" style="width: 100%;" multiple>
<option></option>
@foreach($productcategories as $productcategory)
<option value="{{ $productcategory->id }}" {{ $user->prodmulti == $productcategory->id ? "selected" : ""}}>
{{ $productcategory->name }}
</option>
@endforeach
</select>
</div>
</div>
控制器中的显示函数看起来像这样,我使用explode将值提取为数组。
$prodmulti = explode(',', $prodmulti);
return view(
'admin.users.edit',
compact([
'user',
'roles',
'countries',
'states',
'productcategories',
'prodmulti'
])
);
如果有帮助,这是我创建的视图,我再次使用这些多选框之一来添加值
<div class="col-lg-8 col-xl-5">
<div class="form-group">
<select class="js-select2 form-control" id="prodmulti" name="prodmulti[]" style="width: 100%;" data-placeholder="Choose many.." multiple>
<option></option>
@foreach($productcategories as $productcategory)
<option value="{{ $productcategory->id }}">
{{ $productcategory->name }}
</option>
@endforeach
</select>
</div>
</div>
最后,我使用了 select2 多选框,但如果我只使用标准引导多选框并尝试了这两种方法,我会得到相同的结果,我只是喜欢 select2 多选框的外观。
任何帮助将不胜感激, 谢谢, 史蒂夫。
【问题讨论】:
-
$user->prodmulti这里存储逗号分隔值?对 -
嗨@Kamish Paul,是的,这是正确的。一个存储值的例子是
-
1 例如或 1,2,3 作为另一个示例,甚至为 Null