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

Элемент списка в Livewire

Давайте теперь возьмём список заголовков. Строку сдвинули мышью, а сервер не знает, какую именно: до него доходит только новое место, без имени строки.

Атрибут элемента wire:sort:item вешают на каждый li и передают стабильный id из массива. Тогда обработчик узнает и строку, и позицию, куда её поставили.

Страница откроется по адресу /posts/item. Давайте создадим компонент PostItem:

php artisan make:livewire PostItem --class

Давайте заведём массив заголовков и свойство для подписи:

<?php namespace App\Livewire; use Livewire\Component; class PostItem extends Component { public $titles = [ 1 => 'News', 2 => 'Note', 3 => 'Draft', ]; public $note = ''; public function handleSort($id, $position) { $this->note = $id . ' at ' . $position; $title = $this->titles[$id]; unset($this->titles[$id]); $order = array_values( array_keys($this->titles) ); array_splice( $order, $position, 0, [$id] ); $sorted = []; foreach ($order as $key) { $sorted[$key] = ($key === $id) ? $title : $this->titles[$key]; } $this->titles = $sorted; } public function render() { return view('livewire.post-item'); } } ?>

Давайте выведем список с wire:sort и подпись под ним:

<div> <ul wire:sort="handleSort"> @foreach ($titles as $id => $title) <li wire:key="{{ $id }}" wire:sort:item="{{ $id }}" > {{ $title }} </li> @endforeach </ul> <div>{{ $note }}</div> </div>

Давайте откроем страницу по адресу /posts/item:

<?php Route::get('/posts/item', function () { return view('posts-item'); }); ?>
<x-layout> <livewire:post-item /> </x-layout>

Создайте компонент EmployeeItem. После перетаскивания на странице видно, какого работника сдвинули и на какое место.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить