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

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

Директива wire:sort:ignore применяется к HTML-элементу и сообщает Livewire, что данный элемент должен быть исключен из системы сортировки. Это означает, что такой элемент нельзя перемещать методом перетаскивания, и он не будет участвовать в сортировке. Директива не принимает никаких значений, достаточно просто ее наличия на элементе.

Синтаксис

<div wire:sortable="updateOrder"> <div wire:sort:ignore> Этот элемент не участвует в сортировке </div> <div wire:sort:item="{{ $item->id }}"> Сортируемый элемент 1 </div> <div wire:sort:item="{{ $item->id }}"> Сортируемый элемент 2 </div> </div>

Пример

Давайте создадим список задач, где последняя задача «Завершенные» будет исключена из сортировки:

<?php namespace AppLivewire; use LivewireComponent; class TaskList extends Component { public $tasks = [ ['id' => 1, 'name' => 'Задача 1', 'status' => 'active'], ['id' => 2, 'name' => 'Задача 2', 'status' => 'active'], ['id' => 3, 'name' => 'Задача 3', 'status' => 'active'], ['id' => 4, 'name' => 'Завершенные', 'status' => 'completed'], ]; public function updateOrder($orderedIds) { $orderedTasks = []; foreach ($orderedIds as $id) { foreach ($this->tasks as $task) { if ($task['id'] == $id) { $orderedTasks[] = $task; break; } } } $this->tasks = $orderedTasks; } public function render() { return view('livewire.task-list'); } } ?>
<div wire:sortable="updateOrder"> @foreach ($tasks as $task) @if ($task['status'] == 'completed') <div wire:sort:ignore style="background: #f0f0f0; padding: 10px;"> {{ $task['name'] }} </div> @else <div wire:sort:item="{{ $task['id'] }}" style="padding: 10px; background: #e0f0ff; margin: 5px 0;"> {{ $task['name'] }} </div> @endif @endforeach </div>

Результат выполнения кода:

<div> <div style="background: #e0f0ff; padding: 10px; margin: 5px 0;"> Задача 1 </div> <div style="background: #e0f0ff; padding: 10px; margin: 5px 0;"> Задача 2 </div> <div style="background: #e0f0ff; padding: 10px; margin: 5px 0;"> Задача 3 </div> <div style="background: #f0f0f0; padding: 10px;"> Завершенные </div> </div>

Пример

Давайте создадим список категорий, где категория «Все товары» будет зафиксирована вверху списка, а остальные категории можно будет сортировать:

<?php namespace AppLivewire; use LivewireComponent; class CategoryList extends Component { public $categories = [ ['id' => 1, 'name' => 'Все товары', 'fixed' => true], ['id' => 2, 'name' => 'Электроника', 'fixed' => false], ['id' => 3, 'name' => 'Одежда', 'fixed' => false], ['id' => 4, 'name' => 'Книги', 'fixed' => false], ]; public function updateOrder($orderedIds) { $orderedCategories = []; $fixedCategory = null; foreach ($this->categories as $category) { if ($category['fixed']) { $fixedCategory = $category; } } foreach ($orderedIds as $id) { foreach ($this->categories as $category) { if ($category['id'] == $id && !$category['fixed']) { $orderedCategories[] = $category; break; } } } if ($fixedCategory) { array_unshift($orderedCategories, $fixedCategory); } $this->categories = $orderedCategories; } public function render() { return view('livewire.category-list'); } } ?>
<div wire:sortable="updateOrder"> @foreach ($categories as $category) @if ($category['fixed']) <div wire:sort:ignore style="background: #e8f5e9; padding: 12px; border-radius: 4px;"> 🔒 {{ $category['name'] }} </div> @else <div wire:sort:item="{{ $category['id'] }}" style="background: #f5f5f5; padding: 12px; margin: 5px 0; border-radius: 4px;"> {{ $category['name'] }} </div> @endif @endforeach </div>

Результат выполнения кода:

<div> <div style="background: #e8f5e9; padding: 12px; border-radius: 4px;"> 🔒 Все товары </div> <div style="background: #f5f5f5; padding: 12px; margin: 5px 0; border-radius: 4px;"> Электроника </div> <div style="background: #f5f5f5; padding: 12px; margin: 5px 0; border-radius: 4px;"> Одежда </div> <div style="background: #f5f5f5; padding: 12px; margin: 5px 0; border-radius: 4px;"> Книги </div> </div>

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

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