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

Реалтайм-валидация

Реалтайм-валидация в Livewire - это возможность проверять поля формы непосредственно во время ввода данных пользователем. Она реализуется с помощью метода validateOnly, который вызывается при обновлении свойства через директиву wire:model.live. Это позволяет мгновенно отображать ошибки под полями и делать интерфейс более отзывчивым.

Синтаксис

В классе компонента объявляются свойства, правило валидации и метод, в котором вызывается validateOnly с именем поля. В Blade-шаблоне используется директива wire:model.live для мгновенной привязки, а ошибки выводятся с помощью переменной $errors.

<?php namespace AppLivewire; use LivewireComponent; class FormComponent extends Component { public $email = ''; protected $rules = [ 'email' => 'required|email', ]; public function updated($field) { $this->validateOnly($field); } public function render() { return view('livewire.form-component'); } } ?>
<div> <input type="text" wire:model.live="email"> @error('email') <span>{{ $message }}</span> @enderror </div>

Пример

Давайте проверим поле для ввода возраста. Оно должно содержать число не меньше 18. Используем метод validateOnly в сочетании с wire:model.live для моментальной проверки:

<?php namespace AppLivewire; use LivewireComponent; class AgeComponent extends Component { public $age = ''; protected $rules = [ 'age' => 'required|integer|min:18', ]; public function updated($field) { $this->validateOnly($field); } public function render() { return view('livewire.age-component'); } } ?>
<div> <input type="number" wire:model.live="age"> @error('age') <span>{{ $message }}</span> @enderror </div>

При вводе значения меньше 18, пользователь сразу увидит сообщение об ошибке.

Пример

Теперь реализуем реалтайм-валидацию для поля имени, которое должно содержать только буквы и быть не короче двух символов. Также добавим проверку пароля, который должен содержать минимум 6 символов:

<?php namespace AppLivewire; use LivewireComponent; class RegisterComponent extends Component { public $name = ''; public $password = ''; protected $rules = [ 'name' => 'required|alpha|min:2', 'password' => 'required|min:6', ]; public function updated($field) { $this->validateOnly($field); } public function render() { return view('livewire.register-component'); } } ?>
<div> <div> <input type="text" wire:model.live="name" placeholder="Имя"> @error('name') <span>{{ $message }}</span> @enderror </div> <div> <input type="password" wire:model.live="password" placeholder="Пароль"> @error('password') <span>{{ $message }}</span> @enderror </div> </div>

Теперь поля name и password валидируются сразу при вводе. Это помогает пользователю быстро исправить ошибки.

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

  • класс Form,
    который используется для работы с формами в Livewire
  • метод validate,
    который проверяет все поля формы
  • метод validateOnly,
    который проверяет конкретное поле
  • метод reset,
    который сбрасывает значения формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить