Laravel:如何使用 select2.js 更新多个 Select 选项

Posted

技术标签:

【中文标题】Laravel:如何使用 select2.js 更新多个 Select 选项【英文标题】:Laravel : How to Update multiple Select option with select2.js 【发布时间】:2018-12-11 03:06:34 【问题描述】:

我想更新我的数据库,但它在选项字段中发送重复值。

这是我的 html 代码:

<select name="size_id[]" multiple="multiple" style="margin-bottom:15px;"
        class="form-control select_multiple">
  @foreach($sizes as $skey=>$sitem)
        @foreach ($product->Sizes as $pkey=>$psize)
                <option value="$sitem->id " @if($sitem->id == $psize->id)selected="selected"@endif>
                     $sitem->name+$skey
                </option>
        @endforeach
    @endforeach
</select>

产品型号:

 public function Sizes()
    
        return $this->belongsToMany(Size::class,'product_sizes');
    

尺寸型号:

public function Products()

    return $this->belongsToMany(Product::class, 'size_products','product_id','size_id');

【问题讨论】:

$sitem-&gt;id 将形成 select2 的键,并且因为您在内部循环中使用它,所以它会被重复。 怎么解决 @if($sitem-&gt;id == $psize-&gt;id)你为什么这样做? 只是为了添加标签 【参考方案1】:

您可以使用 Collections containsStrict 来检查它的项目 id 是否等于任何尺寸,如下所示:

<select name="size_id[]" multiple="multiple" style="margin-bottom:15px;"
                                            class="form-control select_multiple">
@foreach($sizes as $skey=>$sitem)                                   
        <option value="$sitem->id " @if($product->Sizes->containsStrict('id', $item->id)) selected="selected" @endif>
         $sitem->name + $skey 
    </option>
 @endforeach                                       
</select>

【讨论】:

以上是关于Laravel:如何使用 select2.js 更新多个 Select 选项的主要内容,如果未能解决你的问题,请参考以下文章

如何默认选择 select2.js 的下拉值

Select2.js v4.0:如何使用本地数组数据源设置默认选择值?

如何使用 Select2.js 对从 Ajax 调用返回的数据进行多选结果?

如何在 select2.js v4.0 中显示 ajax 数据?

Select2.js v4.0:如何将过滤文本传输到ajax源数据?

如何结合 select2 js 和 WebForms