мой код не защищает разные страницы в моей БД - PullRequest
0 голосов
/ 12 февраля 2019

js:

$('#sortable').sortable({


        stop: function(event, ui) {

            saveContentOrder();
        }
    });
    function saveContentOrder()
    {

        const idsInOrder = $("#sortable").sortable("toArray");


        var data = {
            idsInOrder:idsInOrder
        };

        $.ajax({
            type: "POST",
            url:  "/xxx/yyy/zzz",
            data: data
        }).done( function() {

        }).fail(function() {

        });

    }

index.blade.php:

<tbody  id="sortable" >
                    @foreach ($references as $index => $reference)

                        <tr id="reference_id_{{$reference->id}}">
                                <td width="65%">
                                    <a href="{{ route('admin.reference.edit', $reference->id ) }}"><b>{{ $reference->title }}</b>
                                    </a><br>
                                </td>
                                <td>
                                    @if(!count($reference->images))<span style="color:#ff0000;font-weight:700;">0</span>@else{{ count($reference->images) }}@endif
                                </td>
                                <td>
                                    {{ $reference->priority }}

мой веб-маршрут:

Route::post('/xxx/yyy/zzz', 'AdminReferenceController@reorder');

мой контроллер:

public function reorder(Request $request)
    {
        $order = $request->get('idsInOrder',[]);
        if (is_array($order))
        {
            foreach($order as $position => $idName)
            {
                $id = str_replace("reference_id_","",$idName);
                $gesamt = Reference::all()->count();
                $c = \App\Reference::find($id);
                if($c)
                {
                    $c->priority = $gesamt-$position;
                    $c->save();
                }
            }
        }

когда я на своей первой странице, он сохраняет изменение позиции и приоритета, которое я перетаскиваю. Но когда я, например, перехожу на вторую страницу и перетаскиваю порядок, ему присваивается тот же приоритет, что и на странице 1.означает, что он сначала думает, что должен быть 20-м или 30-м.я в основном хочу, чтобы это было в правильном порядке все время.У меня есть шоу 10, шоу 30 и шоу 100. Когда я, например, добираюсь до шоу 30, и у меня нет страниц, так как у меня сейчас не так много записей, это работает без проблем.но как только я показываю 10 и получаю 3 страницы, приоритет смешивается.как я могу это исправить

1 Ответ

0 голосов
/ 12 февраля 2019
this is js File:

$('#sortable').sortable({
    update: function(event, ui) {
        saveContentOrder();
    }
});
function saveContentOrder()
{ 
  const idsInOrder = $(this).sortable("serialize");
  var data = {
        idsInOrder:idsInOrder
    };

    $.ajax({
        type: "POST",
        url:  "/xxx/yyy/zzz",
        data: data
    }).done( function() {

    }).fail(function() {

    });
}


this is controller file

public function reorder(Request $oRequest)
{  
   //$oRequest->idsInOrder get all orders positiion ids.affter drag 
    data like,
//orders[]=6&orders[]=5&orders[]=3&orders[]=4&orders[]=2&orders[]=1
  parse_str($oRequest->idsInOrder);
    $nCount = 1;
    foreach($orders as $order)
    {
      // update database order
        $nCount++;
    }
    return Response::json(['success' => true]);
}
...