Заполнение элементов в поле ввода select2 - PullRequest
0 голосов
/ 04 июня 2019

Мне нужно работать с тегами в моем приложении Laravel, используя Bootstrap 4.

В представлениях create у меня есть «множественный выпадающий список» с использованием библиотеки 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 голосов
/ 04 июня 2019

Судя по всему.Вы не получаете общие теги.

Сначала вам нужно получить все свои теги

$tags = Tag::all();

Затем получите выбранные теги Аутентифицированного пользователя.

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

На вашемДля этого вам нужно перебрать общие теги, а затем проверить, находится ли идентификатор тега в массиве $ 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>

Если у вас возникнет идея, вы найдете решение или можете немного изменить предоставленный код.

...