Как отделить UUids для Jquery -Sortable - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу использовать сортируемый метод jquery -ui для моего проекта larave. Когда я отделил мои <tr> строки с идентификатором, проблем не было.

Пример;

<tr id="item-1">

Но если я хочу использовать uuids вместо id моя строка tr становится такой:

<tr id="item-b20s0b82-dc01-4e9a-a7a6-cd60ff5f9165">

Так что, если я пытаюсь использовать таким образом, это дает мне ошибку. Я использую "-" для разделения, но у uuids также есть "-"

Как я могу это исправить? Спасибо ...

ОБНОВЛЕНИЕ:

index.blade часть моего стола (пытается сортировать)

<tbody id="sortable">
                @foreach($data['blogs'] as $blogs)
                    <tr id="item-{{$blogs->id}}">
                        <td>{{$loop->iteration}}</td>
                        <td><img width="100" src="/images/blogs/{{$blogs->blogs_file}}" alt=""></td>
                        <td class="sortable">{{$blogs->blogs_title}}</td>
                        <td>{{Illuminate\Support\Str::limit($blogs->blogs_content, 15)}}</td>
                        <td align="center" width="20">
                            <a href="#"><i
                                    class="fa fa-pencil-square"></i></a>
                        </td>
                        <td align="center" width="20">
                            <a href="javascript:void(0)"><i id="{{$blogs->uuid}}"
                                                            class="fa fa-trash-o"></i></a>
                        </td>
                    </tr>
                @endforeach
                </tbody>

jquery:

$(function () {
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $('#sortable').sortable({
                revert: true,
                handle: ".sortable",
                stop: function (event, ui) {
                    var data = $(this).sortable('serialize');
                    $.ajax({
                        type: "POST",
                        data: data,
                        url: "{{route('blogs.Sortable')}}",
                        success: function (msg) {

                            if (msg) {
                                alertify.success('İşlem Başarılı');
                            } else {
                                alertify.error('İşlem Başarısız');
                            }
                        }
                    });
                }
            });
            $('#sortable').disableSelection();
        });

BlogController:

public function sortable()
    {
        foreach ($_POST['item'] as $key => $value) {
            $blogs = Blogs::find(intval($value));
            $blogs->blogs_must = intval($key);
            $blogs->save();
        }
        echo true;
    }

В этом случае он прекрасно работает. Но когда я изменяю <tr id="item-{{$blogs->id}}"> на

<tr id="item-{{$blogs->uuid}}">

, происходит сбой.

1 Ответ

0 голосов
/ 29 апреля 2020

ОБНОВЛЕНИЕ: Я наконец понял это. Проблема с этой частью:

var data = $ (this) .sortable ('serialize');

Поэтому, если я хочу использовать UUID вместо идентификаторов, я должен сделать это следующим образом:

В табличном теле;

id = "item _ {{$ blogs-> uuid}}"

Чем мой Jquery код:

var data = $ (this) .sortable ('serialize', {expression: /(.+)_(.+ ) /});

Теперь все готово.

...