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

Атрибут On

Атрибут On является PHP-атрибутом (аннотацией), который вешается на метод компонента Livewire. В значение передаётся имя события, на которое метод должен реагировать. Когда событие будет отправлено через глобальный диспетчер событий Livewire, метод будет автоматически вызван.

Синтаксис

Атрибут применяется к публичному методу и принимает один обязательный параметр - строку с именем события:

<?php use Livewire\Attributes\On; class SomeComponent extends Component { #[On('event-name')] public function handleEvent() { // действие } } ?>

Пример

Пусть у нас есть два компонента: Sender и Receiver. Компонент Sender отправляет событие update, а компонент Receiver слушает его с помощью атрибута On:

<?php namespace App\Livewire; use Livewire\Component; class Sender extends Component { public function send() { $this->dispatch('update'); } public function render() { return view('livewire.sender'); } } ?>
<button wire:click="send"> Send event </button>
<?php namespace App\Livewire; use Livewire\Component; use Livewire\Attributes\On; class Receiver extends Component { public $num = 0; #[On('update')] public function inc() { $this->num++; } public function render() { return view('livewire.receiver'); } } ?>
<div> <span>{{ $num }}</span> </div>

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

<div> <button>Send event</button> <div> <span>1</span> </div> </div>

Пример

В метод можно передать данные из события. Для этого вторым параметром в dispatch передаётся массив данных, а в методе-обработчике они принимаются как аргументы:

<?php namespace App\Livewire; use Livewire\Component; class Sender extends Component { public function send() { $this->dispatch('update', step: 3); } public function render() { return view('livewire.sender'); } } ?>
<?php namespace App\Livewire; use Livewire\Component; use Livewire\Attributes\On; class Receiver extends Component { public $num = 0; #[On('update')] public function inc($step) { $this->num += $step; } public function render() { return view('livewire.receiver'); } } ?>

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

<div> <button>Send event</button> <div> <span>3</span> </div> </div>

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

  • атрибут Validate,
    который используется для валидации свойств
  • атрибут Computed,
    который помечает метод как вычисляемое свойство
  • атрибут Url,
    который синхронизирует свойство с URL-параметрами
  • атрибут Session,
    который сохраняет свойство в сессии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить