Все ошибки поля в Inertia
Допустим, у заголовка записи несколько правил проверки, и человеку нужно увидеть не одну строку, а полный список замечаний сервера под полем.
По умолчанию хелпер хранит
для поля одно сообщение.
Метод withAllErrors
просит Inertia оставить
ошибки массивами. Тогда
form.errors.title
можно обойти в цикле
и вывести каждую строку.
На стороне Laravel для полного
набора сообщений в ответе
нужна соответствующая настройка
адаптера Inertia.
Давайте опишем несколько правил для заголовка:
<?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->validate([
'title' => 'required|string|min:3|max:20',
]);
return back();
});
?>
Давайте разрешим адаптеру отдавать все строки по полю и включим режим на клиенте:
<?php
class HandleInertiaRequests extends Middleware
{
protected $withAllErrors = true;
// ...
}
?>
Давайте включим все сообщения и выведем их списком:
<script setup>
import { useForm } from '@inertiajs/vue3'
const form = useForm({
title: '',
}).withAllErrors()
function submit() {
form.post('/posts')
}
</script>
<template>
<form @submit.prevent="submit">
<input
type="text"
v-model="form.title"
/>
<ul v-if="form.errors.title">
<li
v-for="(message, index) in form.errors.title"
:key="index"
>
{{ message }}
</li>
</ul>
<button type="submit">Save</button>
</form>
</template>
Сделайте форму работника Finn так, чтобы под полем email выводился список всех сообщений проверки, если сервер вернул несколько.