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

Метод updatingFoo

Метод updatingFoo является жизненным хуком в Livewire, который вызывается непосредственно перед изменением свойства компонента с именем Foo. Этот метод позволяет перехватить момент обновления конкретного свойства, выполнить валидацию, модифицировать новое значение или отменить изменение. Метод получает новое значение свойства и может его изменить перед применением.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; class ExampleComponent extends Component { public $foo; public function updatingFoo($value) { // Logic before updating $foo } } ?>

Пример

Давайте создадим компонент со свойством $num и будем перехватывать его изменение через метод updatingNum:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function updatingNum($value) { $this->num = $value * 2; } public function inc() { $this->num++; } public function render() { return view('livewire.counter'); } } ?>
<button wire:click="inc"> + </button> <span>{{ $num }}</span>

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

"num is 2"

Пример

Давайте добавим валидацию в метод updatingNum, чтобы предотвратить установку отрицательного значения:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function updatingNum($value) { if ($value < 0) { $this->num = 0; return; } $this->num = $value; } public function setNum($value) { $this->num = $value; } public function render() { return view('livewire.counter'); } } ?>
<button wire:click="setNum(-5)"> Set -5 </button> <button wire:click="setNum(10)"> Set 10 </button> <span>{{ $num }}</span>

Результат выполнения кода после клика на кнопку "Set -5":

"num is 0"

Пример

Метод updatingFoo также может принимать второй параметр для получения имени свойства:

<?php namespace AppLivewire; use LivewireComponent; class Profile extends Component { public $name = ''; public $email = ''; public function updating($property, $value) { if ($property === 'email') { $this->email = strtolower($value); } } public function render() { return view('livewire.profile'); } } ?>
<input type="text" wire:model="email" placeholder="Email"> <span>{{ $email }}</span>

Результат выполнения кода при вводе "TEST@MAIL.COM":

"test@mail.com"

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

  • метод updatedFoo,
    который вызывается после изменения свойства
  • метод updating,
    который вызывается перед изменением любого свойства
  • метод updated,
    который вызывается после изменения любого свойства
  • метод mount,
    который вызывается при инициализации компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить