在select2输入字段中填充项目

时间:2019-06-04 07:44:05

标签: javascript jquery jquery-select2

我需要使用Bootstrap 4在Laravel应用程序中使用标签。

在创建视图中,我使用select2.min.js库有一个“多个选择下拉菜单”:

enter image description here

在控制器中,我有:

$tags = Tag::where('user_id', Auth::id())->get();

在CREATE视图中,我有:

<div class="form-group">
  <label class="form-label" for="tags">Tags:  (*)</label>
  <select class="form-control tag-multiple" name="beeritem_tags[]" multiple="multiple">
      @foreach($tags as $tag)
          <option value="{{$tag->id}}">{{$tag->tag_name}}</option>
      @endforeach
  </select>
</div>

,我有以下JS代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<script>
   $(document).ready(function() {
     $('.tag-multiple').select2();
   });
</script>

现在,我还有一个EDIT表单,该表单允许用户添加或删除标签。因此,我需要在输入字段中预先填充该项目的标签。因此,一旦有人打开编辑表单,他应该会看到上面的屏幕截图(其中包含用户在创建过程中选择的项目)。

如何用标签填充输入元素?

1 个答案:

答案 0 :(得分:0)

从外观上看。您不是要检索常规标签。

首先,您需要检索所有标签

$tags = Tag::all();

然后获取Authenticated用户的选定标签。

$user_tags = Tag::where('user_id', Auth::id())->pluck('id')->toArray();

在刀片上,您需要循环浏览常规标签,然后检查标签ID 是否在 $ user_tags 数组中。 类似于以下代码。

 <div class="form-group">
  <label class="form-label" for="tags">Tags:  (*)</label>
  <select class="form-control tag-multiple" name="beeritem_tags[]" multiple="multiple">
      @foreach($tags as $tag)
          <option value="{{$tag->id}}" {{ in_array($tag->id, $user_tags) ? 'selected' : '' }}>{{$tag->tag_name}}</option>
      @endforeach
  </select>
</div>

如果您有主意,可以找出解决方案,或者可以稍微修改提供的代码。