РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
63 of 274 menu

Директива wire:sort:item

Директива wire:sort:item используется совместно с директивой wire:sort для реализации функциональности перетаскивания элементов (drag-and-drop) в списке. Она вешается на каждый элемент списка, который должен быть сортируемым. В значение передается уникальный идентификатор элемента, который будет передан в метод, указанный в wire:sort, при завершении перетаскивания.

Синтаксис

<div wire:sort="updateOrder"> @foreach ($items as $item) <div wire:sort:item="{{ $item->id }}"> {{ $item->name }} </div> @endforeach </div>

Пример

Создадим компонент с сортируемым списком задач:

<?php namespace AppLivewire; use LivewireComponent; use AppModelsTask; class TodoList extends Component { public $tasks; public function mount() { $this->tasks = Task::orderBy('order') ->get(); } public function updateOrder($orderedIds) { foreach ($orderedIds as $index => $taskId) { Task::where('id', $taskId) ->update(['order' => $index + 1]); } $this->tasks = Task::orderBy('order') ->get(); } public function render() { return view('livewire.todo-list'); } } ?>
<div> <h2>Todo List</h2> <div wire:sort="updateOrder"> @foreach ($tasks as $task) <div wire:sort:item="{{ $task->id }}" style="padding: 10px; border: 1px solid #ccc;"> {{ $task->name }} </div> @endforeach </div> </div>

После перетаскивания элементов метод updateOrder получит массив ID задач в новом порядке:

[3, 1, 2, 4, 5]

Пример

Используем директиву wire:sort:item с дополнительными классами для визуального отображения:

<div> <div wire:sort="updateOrder"> @foreach ($items as $item) <div wire:sort:item="{{ $item->id }}" class="sortable-item"> <span class="drag-handle">⠿</span> <span>{{ $item->name }}</span> <span class="item-order">#{{ $loop->iteration }}</span> </div> @endforeach </div> </div>

Смотрите также

  • директиву wire:sort,
    которая определяет контейнер для сортировки
  • директиву wire:sort.group,
    которая группирует элементы для сортировки
  • директиву wire:sort.handle,
    которая определяет область захвата для перетаскивания
  • директиву wire:model,
    которая привязывает поле ввода к свойству компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить