Сообщения формы в Livewire
Давайте разберём такой случай. Пустое поле заголовка ругается чужими словами из фреймворка, и человек не сразу понимает, что именно нужно исправить.
В классе формы рядом с
rules можно описать
метод messages: ключ
совпадает с правилом, значение
- готовая фраза для экрана.
Давайте заведём TitleForm:
<?php
namespace App\Livewire\Forms;
use Livewire\Form;
class TitleForm extends Form
{
public $title = '';
public function rules()
{
return [
'title' => 'required',
];
}
public function messages()
{
return [
'title.required' => 'Enter a title',
];
}
}
?>
Давайте создадим компонент
TitleEditor:
php artisan make:livewire TitleEditor --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/title', function () {
return view('posts-title');
});
?>
<x-layout>
<livewire:title-editor />
</x-layout>
Давайте свяжем форму и сохранение с проверкой:
<?php
namespace App\Livewire;
use App\Livewire\Forms\TitleForm;
use Livewire\Component;
class TitleEditor extends Component
{
public TitleForm $form;
public function save()
{
$this->form->validate();
}
public function render()
{
return view('livewire.title-editor');
}
}
?>
Давайте покажем поле, ошибку и кнопку:
<div>
<input
type="text"
wire:model="form.title"
>
@error('form.title')
<div>{{ $message }}</div>
@enderror
<button type="button" wire:click="save">
Save
</button>
</div>
Создайте класс StaffForm
и компонент StaffEditor.
Пустое имя работника показывает
свою фразу Enter a name.