Точечные имена полей в Inertia
Пусть в форме записи нужно
отдельно спросить имя автора,
а на сервер уходит вложенный
объект user. Сообщение
проверки приходит не
по короткому имени, а по ключу
с точкой, как user.name.
Объект errors у хелпера
использует такую же точечную
запись для вложенных полей.
В шаблоне обращаются
к form.errors['user.name'],
а значение поля держат
во вложенном свойстве
объекта формы.
Давайте опишем проверку вложенного имени:
<?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([
'user.name' => 'required|string',
]);
return back();
});
?>
Давайте свяжем вложенное поле и выведем ошибку по ключу:
<script setup>
import { useForm } from '@inertiajs/vue3'
const form = useForm({
user: {
name: '',
},
})
function submit() {
form.post('/posts')
}
</script>
<template>
<form @submit.prevent="submit">
<input
type="text"
v-model="form.user.name"
/>
<div v-if="form.errors['user.name']">
{{ form.errors['user.name'] }}
</div>
<button type="submit">Save</button>
</form>
</template>
Сделайте форму работника Ada с вложенным полем отдела и сообщением сервера под ним при пустом значении.