Параметри дії передаються як аргументи виклику:
<button wire:click="addToCart({{ $product->id }}, 2)">У кошик</button>
<button wire:click="setStatus('archived')">В архів</button>
public function addToCart(int $productId, int $qty = 1): void
{
$product = Product::query()->published()->findOrFail($productId);
$this->cart->add($product, min($qty, 10));
}
Моделі й енуми як параметри. Якщо параметр типізований моделлю, Livewire знайде її за переданим ключем (як прив'язка моделей у маршрутах):
public function delete(Post $post): void
{
$this->authorize('delete', $post);
$post->delete();
}
Параметри - це введення користувача. У консолі браузера можна викликати $wire.addToCart(999, 100000). Тип перевіряє PHP, а межі, існування запису й права - лише ваш код.
Не тільки клік. Після wire: можна вказати будь-яку подію браузера:
<input wire:keydown.enter="search">
<input wire:keydown.escape="clear">
<div wire:mouseenter="loadPreview({{ $id }})">
<trix-editor wire:trix-change="setContent($event.target.value)">
Модифікатори (працюють через x-on Alpine):
| Модифікатор | Що робить |
|---|---|
.prevent |
preventDefault() |
.stop |
stopPropagation() |
.once |
спрацювати один раз |
.self |
лише якщо подія виникла на самому елементі |
.window, .document |
слухати на window / document |
.outside |
клік поза елементом |
.debounce.300ms, .throttle.500ms |
обмеження частоти |
.shift.enter, .ctrl, .escape |
клавіші й комбінації |
Модифікатори Livewire 4:
.async- виконати дію паралельно, не чекаючи черги;.renderless- без повторного рендеру;.preserve-scroll- зберегти позицію прокрутки після оновлення.
$event - об'єкт події браузера в виразі: wire:change="setColor($event.target.value)".
Магічні дії без методу: $refresh (перерендерити), $set('tab', 'settings') (встановити властивість), $toggle('open'), $dispatch(...), $parent.method().
Стан завантаження: елемент, що ініціював запит, автоматично отримує атрибут data-loading - кнопку легко стилізувати через Tailwind (data-loading:opacity-50).