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

Метод updating

Метод updating класса Component в Livewire автоматически вызывается перед тем, как свойство компонента будет изменено. Он получает два параметра: новое значение свойства и имя свойства. Метод позволяет выполнить валидацию, преобразование или отмену изменения свойства до его фактического обновления.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; class UserProfile extends Component { public $name; public function updating($property, $value) { // логика перед обновлением свойства } public function render() { return view('livewire.user-profile'); } } ?>

Метод также можно использовать с постфиксом для конкретного свойства, тогда он будет вызываться только при изменении этого свойства.

<?php namespace AppLivewire; use LivewireComponent; class UserProfile extends Component { public $name; public function updatingName($value) { // логика только для свойства name } public function render() { return view('livewire.user-profile'); } } ?>

Если в методе вернуть false, изменение свойства будет отменено, а шаблон компонента не будет перерендерен.

Пример

Давайте создадим компонент с полем ввода и свойством $text. В методе updating сделаем так, чтобы текст преобразовывался в верхний регистр перед сохранением:

<?php namespace AppLivewire; use LivewireComponent; class TextTransformer extends Component { public $text = ''; public function updating($property, $value) { if ($property === 'text') { return strtoupper($value); } } public function render() { return view('livewire.text-transformer'); } } ?>
<div> <input type="text" wire:model.live="text"> <p>Text: {{ $text }}</p> </div>

При вводе текста в поле ввода, он автоматически преобразуется в заглавные буквы.

Пример

Давайте реализуем валидацию с помощью метода updating. Если вводимое значение не проходит проверку, изменение отменяется и выводится сообщение об ошибке:

<?php namespace AppLivewire; use LivewireComponent; class UserAge extends Component { public $age = 18; public $error = ''; public function updatingAge($value) { if ($value < 18 || $value > 100) { $this->error = 'Age must be between 18 and 100'; return false; } $this->error = ''; } public function render() { return view('livewire.user-age'); } } ?>
<div> <input type="number" wire:model.live="age"> @if($error) <p style="color: red;">{{ $error }}</p> @endif <p>Age: {{ $age }}</p> </div>

Если пользователь введет недопустимое значение, свойство $age не изменится, и будет показано сообщение об ошибке.

Пример

Рассмотрим пример с несколькими свойствами и общим методом updating, где мы логируем все изменения:

<?php namespace AppLivewire; use LivewireComponent; class UserProfile extends Component { public $name = ''; public $email = ''; public $logs = []; public function updating($property, $value) { $this->logs[] = "Changing {$property} to {$value}"; if ($property === 'email') { return strtolower(trim($value)); } } public function render() { return view('livewire.user-profile'); } } ?>
<div> <input type="text" wire:model.live="name" placeholder="Name"> <input type="text" wire:model.live="email" placeholder="Email"> <h3>Logs:</h3> @foreach($logs as $log) <p>{{ $log }}</p> @endforeach </div>

При каждом изменении свойств в лог записывается сообщение, а для свойства $email дополнительно применяется преобразование.

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

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