Имена полей формы в Livewire
Давайте рассмотрим ситуацию, когда сообщение об ошибке называет поле именем свойства в коде, а человеку нужно привычное слово вроде заголовка.
Метод validationAttributes
в классе формы сопоставляет
имя свойства с подписью,
которую подставят в текст
ошибки вместо технического
названия.
Давайте заведём HeadForm:
<?php
namespace App\Livewire\Forms;
use Livewire\Form;
class HeadForm extends Form
{
public $title = '';
public function rules()
{
return [
'title' => 'required|min:3',
];
}
public function validationAttributes()
{
return [
'title' => 'title',
];
}
}
?>
Давайте создадим компонент
HeadEditor:
php artisan make:livewire HeadEditor --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/head', function () {
return view('posts-head');
});
?>
<x-layout>
<livewire:head-editor />
</x-layout>
Давайте опишем компонент и сохранение:
<?php
namespace App\Livewire;
use App\Livewire\Forms\HeadForm;
use Livewire\Component;
class HeadEditor extends Component
{
public HeadForm $form;
public function save()
{
$this->form->validate();
}
public function render()
{
return view('livewire.head-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>
Создайте класс NameForm
и компонент NameEditor.
В сообщении об имени работника
стоит слово name, а не имя
свойства.