You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel中无需JS为bootstrap-select设置默认值

解决bootstrap-select多选下拉框在编辑场景的默认值设置问题

正确实现步骤

1. 提取已选分类ID数组

在Blade模板中用@php块创建已选分类的ID数组,避免用{{}}输出多余内容:

@php
$selectedCategoryIds = [];
foreach ($product->categories as $origin) {
    $selectedCategoryIds[] = $origin->category->id;
}
@endphp

2. 生成带选中状态的下拉选项

只遍历一次全部分类,通过in_array判断当前分类是否属于已选列表,动态添加selected属性:

<select name="category_id[]" class="form-control selectpicker" multiple data-live-search="true">
   @foreach($categories as $category)
      <option value="{{$category->id}}" {{ in_array($category->id, $selectedCategoryIds) ? 'selected' : '' }}>
          {{ $category->name }}
      </option>
   @endforeach
</select>

3. 刷新bootstrap-select插件

bootstrap-select基于原生select封装,设置完原生选中状态后,需要调用刷新方法同步界面显示:

$(document).ready(function() {
    $('.selectpicker').selectpicker('refresh');
});

为什么之前的方法不行?

  • 直接传入数组到values属性:原生HTML的<select>标签没有values属性,多选下拉的默认选中状态完全依赖<option>的selected属性,bootstrap-select也不支持这种设置方式。
  • 两层foreach生成选项:外层遍历已选分类、内层遍历全部分类的写法,会导致每个已选分类都重新生成一遍全部选项,最终下拉框出现大量重复选项,不符合需求。

内容的提问来源于stack exchange,提问作者Quiet Molly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:15:37