Пакет ошибок в Inertia
Давайте теперь разведём сообщения проверки, если на одной странице несколько форм с одинаковыми именами полей. Laravel может складывать ошибки в разные пакеты, чтобы они не смешивались в общем ответе.
При отправке через хелпер
имя пакета задают
в параметрах визита
опцией errorBag
у метода post.
На сервере
правила задают через
validateWithBag
с тем же именем. Сообщения
попадают в объект
errors у той формы,
которая отправляла запрос.
Давайте опишем проверку в именованном пакете:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts/create', function () {
return Inertia::render('Posts/Create');
});
Route::post('/posts', function (Request $request) {
$request->validateWithBag('createPost', [
'title' => 'required|string',
]);
return back();
});
?>
Давайте укажем пакет при отправке и выведем ошибку:
<script setup>
import { useForm } from '@inertiajs/vue3'
const form = useForm({
title: '',
})
function submit() {
form.post('/posts', {
errorBag: 'createPost',
})
}
</script>
<template>
<form @submit.prevent="submit">
<input
type="text"
v-model="form.title"
/>
<div v-if="form.errors.title">
{{ form.errors.title }}
</div>
<button type="submit">Save</button>
</form>
</template>
Сделайте форму работника Zoe так, чтобы ошибка пустого имени не смешивалась с другой формой на странице и показывалась под полем.