После большого количества проб и ошибок я, наконец, получил отсортированный список, который позволит вам перетащить и перейти на курорт, но я не могу получить список для сохранения.
Я предполагаю, что это проблема с частью JS кода, потому что, по-видимому, контроллер никогда не вызывается. И если у меня было что-то не так с тем, как я вызвал контроллер, но он все еще пытался, то Laravel выдавал бы ошибку.
Ответ, вероятно, очень прост, но я не знаю много о JQuery или Ajax, поэтому я не мог обнаружить проблему.
Вот мой код:
Посмотреть
<ul class="sortable" style="list-style-type: none;"> @foreach ($departments as $department) <li class="row" id="{{ $department->id }}"> <div class="col-xs-9"><span style="color: {{ $department->color }};">{{ $department->name }}</span></div> <div class="col-xs-3"> <a href="{{ URL::route('chapter.editDepartment', (array($chapter->slug, $department->id))) }}"> EDIT </a> </div> </li> @endforeach </ul>
JS После использования «источника просмотра» я вижу, что URL-адрес действительно генерируется правильно, поэтому это должно быть хорошо.
<script> $('.sortable').sortable().bind('sortupdate', function(e, ui) { var order = $('ul.sortable li').map(function(){ return $(this).data("id"); }).get(); $.ajax({ type: "POST", url: "{{ URL::route('chapter.departmentSort', $chapter->slug) }}", dataType: "json", data: {order: order, uuid: uuid}, success: function(order){ console.log(order) } }); }); </script>
контроллер
public function departmentSort($chapterSlug) { // Get the chapter ID $chapter = $this->getChapterFromSlug($chapterSlug); $input = Input::get('order'); $i = 1; foreach($input as $value) { $department = Department::find($value); $department->sort_order = $i; $department->save(); $i++; } return Redirect::route('chapter.chapterDepartments', $chapter->slug); }
маршрут
Route::post('{slug}/orderDepartment', ['as' => 'chapter.departmentSort', 'uses' => 'SerenityController@departmentSort']);
ОТВЕТ
Благодаря Джошу я смог понять это, и с чуть-чуть большим поиском я получил его на работу! $ .ajax не работал, и консоль ничего не показала для этого, но я поменял его на $ .post, и он работает как чемпион.
$.post("{{ URL::route('chapter.departmentSort', $chapter->slug) }}", { order: order } );
Теперь единственная проблема заключается в том, что drag & drop не работает на ipad …