@lolrofl01

Как правильно передать данные в layout отдельно от данных страницы в связке laravel + vue + inertia?

Добрый день.
Решил из старенького сайта сделать 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>
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы