Пропсы из страницы в Inertia
Допустим, в шапке нужно показать имя человека, которое сервер отдал в пропсах страницы. Значение заранее неизвестно и меняется от адреса к адресу, поэтому статический объект в кортеже не подходит.
Опция layout может быть
функцией. Inertia передаёт ей
пропсы текущей страницы, а
функция возвращает тот же формат,
что и обычное определение:
компонент макета и объект
пропсов в кортеже. Так заголовок
в оболочке собирается из данных
ответа сервера.
Давайте отдадим имя с маршрута профиля:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/profile', function () {
return Inertia::render('Profile/Show', [
'user' => ['name' => 'Anna'],
]);
});
?>
Давайте на странице укажем функцию, которая подставит имя в пропс макета:
<script setup>
import AppLayout from '@/Layouts/AppLayout.vue'
defineProps({
user: Object,
})
defineOptions({
layout: (props) => [
AppLayout,
{ title: 'Profile: ' + props.user.name },
],
})
</script>
<template>
<h1>Profile</h1>
</template>
Сделайте карточку работника Pavel так, чтобы шапка макета показывала его имя, которое пришло с сервера.