Свойство $errors
Свойство $errors в Livewire представляет собой объект
MessageBag, который хранит все ошибки валидации,
возникшие при проверке данных формы. Оно автоматически
заполняется после вызова методов validate или
validateOnly, если валидация не прошла.
Свойство доступно как в классе компонента, так и в шаблоне Blade.
Синтаксис
Свойство $errors используется в Blade-шаблоне
для отображения ошибок валидации:
@error('field_name')
<span>{{ $message }}</span>
@enderror
Либо для прямого доступа к ошибкам через свойство
$errors:
@if ($errors->has('field_name'))
<span>{{ $errors->first('field_name') }}</span>
@endif
Пример
Давайте создадим компонент с формой регистрации, которая проверяет имя и email:
<?php
namespace AppLivewire;
use LivewireComponent;
class RegistrationForm extends Component
{
public $name = '';
public $email = '';
protected $rules = [
'name' => 'required|min:3|max:50',
'email' => 'required|email|max:255',
];
public function submit()
{
$this->validate();
// Save user...
}
public function render()
{
return view('livewire.registration-form');
}
}
?>
<form wire:submit.prevent="submit">
<div>
<input type="text" wire:model="name">
@error('name')
<span>{{ $message }}</span>
@enderror
</div>
<div>
<input type="email" wire:model="email">
@error('email')
<span>{{ $message }}</span>
@enderror
</div>
<button type="submit">Register</button>
</form>
Результат выполнения кода после отправки с пустыми полями:
<form>
<div>
<input type="text">
<span>The name field is required.</span>
</div>
<div>
<input type="email">
<span>The email field is required.</span>
</div>
<button>Register</button>
</form>
Пример
Давайте выведем все ошибки валидации с помощью
свойства $errors напрямую:
@if ($errors->any())
<div>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form wire:submit.prevent="submit">
<div>
<input type="text" wire:model="name">
</div>
<div>
<input type="email" wire:model="email">
</div>
<button type="submit">Register</button>
</form>
Результат выполнения кода после отправки с пустыми полями:
<div>
<ul>
<li>The name field is required.</li>
<li>The email field is required.</li>
</ul>
</div>
<form>
<div>
<input type="text">
</div>
<div>
<input type="email">
</div>
<button>Register</button>
</form>
Пример
Давайте получим первую ошибку для конкретного поля
через свойство $errors:
<form wire:submit.prevent="submit">
<div>
<input type="text" wire:model="name">
@if ($errors->has('name'))
<span>{{ $errors->first('name') }}</span>
@endif
</div>
<div>
<input type="email" wire:model="email">
@if ($errors->has('email'))
<span>{{ $errors->first('email') }}</span>
@endif
</div>
<button type="submit">Register</button>
</form>
Результат выполнения кода после отправки с некорректным email:
<form>
<div>
<input type="text">
</div>
<div>
<input type="email">
<span>The email must be a valid email address.</span>
</div>
<button>Register</button>
</form>
Смотрите также
-
метод
validate,
который запускает валидацию свойств компонента -
метод
validateOnly,
который проверяет только одно свойство -
метод
resetValidation,
который очищает ошибки валидации -
директиву
wire:model,
которая привязывает поле ввода к свойству компонента