Метод messages()
Метод messages используется в классе формы Livewire
для определения пользовательских сообщений об ошибках валидации.
Он возвращает массив, где ключи - это правила валидации,
а значения - сообщения, которые будут показаны пользователю
при нарушении соответствующих правил.
Синтаксис
<?php
use LivewireForm;
class PostForm extends Form
{
public function rules()
{
return [
'field' => 'required|min:3',
];
}
public function messages()
{
return [
'field.required' => 'Поле обязательно для заполнения',
'field.min' => 'Минимальная длина 3 символа',
];
}
}
?>
Пример
Давайте создадим форму с полем для имени пользователя и кастомными сообщениями валидации:
<?php
namespace AppLivewireForms;
use LivewireForm;
class UserForm extends Form
{
public $name = '';
public function rules()
{
return [
'name' => 'required|min:3|max:50',
];
}
public function messages()
{
return [
'name.required' => 'Имя пользователя обязательно',
'name.min' => 'Имя должно содержать минимум 3 символа',
'name.max' => 'Имя не должно превышать 50 символов',
];
}
}
?>
<?php
namespace AppLivewire;
use LivewireComponent;
use AppLivewireFormsUserForm;
class UserComponent extends Component
{
public UserForm $form;
public function save()
{
$this->form->validate();
}
public function render()
{
return view('livewire.user-component');
}
}
?>
<form wire:submit="save">
<input type="text" wire:model="form.name">
@error('form.name')
<span>{{ $message }}</span>
@enderror
<button type="submit">Save</button>
</form>
При попытке отправки пустого поля результатом будет сообщение:
"Имя пользователя обязательно"
Если ввести значение менее 3 символов, результатом будет сообщение:
"Имя должно содержать минимум 3 символа"
Пример
Давайте переопределим сообщения для правил с параметрами:
<?php
namespace AppLivewireForms;
use LivewireForm;
class ArticleForm extends Form
{
public $title = '';
public $content = '';
public function rules()
{
return [
'title' => 'required|min:5|max:100',
'content' => 'required|min:10',
];
}
public function messages()
{
return [
'title.required' => 'Укажите заголовок статьи',
'title.min' => 'Заголовок должен быть длиннее :min символов',
'title.max' => 'Заголовок не может быть длиннее :max символов',
'content.required' => 'Напишите содержание статьи',
'content.min' => 'Содержание должно содержать минимум :min символов',
];
}
}
?>
<?php
namespace AppLivewire;
use LivewireComponent;
use AppLivewireFormsArticleForm;
class ArticleComponent extends Component
{
public ArticleForm $form;
public function save()
{
$this->form->validate();
// Saving logic...
}
public function render()
{
return view('livewire.article-component');
}
}
?>
<div>
<input type="text" wire:model="form.title" placeholder="Title">
@error('form.title')
<div>{{ $message }}</div>
@enderror
<textarea wire:model="form.content" placeholder="Content"></textarea>
@error('form.content')
<div>{{ $message }}</div>
@enderror
<button wire:click="save">Publish</button>
</div>
Если заголовок содержит 3 символа, результатом будет сообщение:
"Заголовок должен быть длиннее 5 символов"
Если содержание содержит 5 символов, результатом будет сообщение:
"Содержание должно содержать минимум 10 символов"
Смотрите также
-
метод
rules,
который определяет правила валидации для формы -
метод
validate,
который выполняет валидацию всех полей формы -
метод
validateOnly,
который валидирует только одно поле формы -
метод
reset,
который сбрасывает значения полей формы