Select2 (4.0.11) возвращает идентификатор вместо текста в предварительном выборе - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь обновить свои сообщения в блоге. Поэтому мне нужны предварительно выбранные теги из базы данных. Я могу загрузить и показать их, на данный момент функция автозаполнения больше не работает, но когда я отправляю свой пост, в качестве значения используется только идентификатор, а не значение. Это выглядит так:

 "tags" => array:1 [
        0 => "22" //that 22 is the id, the value would be something like "abc"
      ]

Это точка, в которой я предварительно загружаю значения:

    <script>
        $(document).ready(function(){

            var tags = {!! $blog_post->tags->toJson() !!};

            var data = $.map(tags, function (obj) {
                obj.id = obj.id; 
                obj.text = obj.name;
                return obj;
            });
            //console.log(data);
            $(".tagsAutocomp").select2({
                data: data

            });
            values = []
            $.each(data, function(step, data){
                values.push(data['id']);
            })

            $('.tagsAutocomp').val(values).trigger('change');

        });
    </script>

в этой точке выглядит нормально

  <script type="text/javascript">
        $('.tagsAutocomp').select2({

                placeholder: 'Select an item',
                tags: true,
                tokenSeparators: [",", " "],
                createSearchChoice: function(term, data) {
                    if ($(data).filter(function() {
                    return this.text.localeCompare(term) === 0;
                    }).length === 0) {
                    return {
                        id: term,
                        text: term
                    };
                    }
                },
                multiple: true,
                ajax: {
                    url: '{{route('tags.autocomplete')}}',
                    dataType: 'json',
                    delay: 250,
                    processResults: function (data) {

                        return {
                        results:  $.map(data, function (item) {
                                return {
                                    text: item.name,
                                    id: item.id
                                }
                            })
                        };
                    },
                    cache: true
                    }
                });

        </script>

Создание нового сообщения, отлично работает. Конечно, я могу просто установить obj.id = obj.name, но я не думаю, что это чистое решение. У кого-нибудь есть идеи, что я делаю не так? Спасибо!

...