Добрый день.
Решил из старенького сайта сделать SPA в качестве обучения. Старый сайт построен на blade шаблонах, имеет главный layout, который наследуют все другие шаблоны. В этом layout находится шапка, футер, сайдбар, меню всякие и прочее. И вот встал перед первым вопросом. Допустим, мы открываем страницу с юзерами, самый банальный пример в интернете. Для этой страницы нам нужен массив $users, это понятно. Но, шаблон user.index наследует layout, в котором находится, например, меню. Для построения меню, соответственно, нужен массив $menu. Но куда этот массив передавать, если в контроллере я вызываю:
return inertia('User/Index', ['users' => $users)
Даже если сюда же передать $menu, его layout не увидит, это уже vue, а не blade, в котором таких проблем не было. Да и неправильно это как-то.
Вот мой layout:
<script default>
import { Head, Link } from '@inertiajs/vue3'
export default {
components: {
Link, Head
},
props: {
},
}
</script>
<template>
<div class="app">
<div>
<ul>
<li v-for="(menu, index) in menuBlock">
{{ menu.title }}
</li>
</ul>
</div>
</div>
</template>
А вот user.index:
<script>
import MainLayout from "@/Layouts/MainLayout.vue";
import {Head} from "@inertiajs/vue3";
export default {
components: {
Head,
MainLayout
},
props: {
title: String,
users: Array
}
}
</script>
<template>
<Head>
<title>{{ title }}</title>
</Head>
<MainLayout>
<div>
<ul>
<li v-for="user in users">
{{ user.name }}
</li>
</ul>
</div>
</MainLayout>
</template>