Páginas e props
Cada página do site é um .vue em vue/pages. O primeiro argumento de inertia() é esse caminho, sem extensão. Ponto vira barra: Account.Panel lê pages/Account/Panel.vue.
Pasta
themes/loja/vue/
├── app.css
├── layouts/Public.vue
└── pages/
├── Home.vue
└── Account/Panel.vue
app/modules/shop/views/vue/show.vuereturn $this->inertia('Home');
return $this->inertia('Account/Panel', [
'character' => $character,
]);
return $this->inertia('shop/show');Página de plugin fica em app/modules/{plugin}/views/vue. O nome segue a view: shop.show. Se o tema tiver vue/modules/{plugin}/, esse arquivo ganha. Não existe a pasta views nessa sobrescrita.
Props
<script setup>
import { usePage } from '@inertiajs/vue3'
defineProps({
server: Object,
})
const page = usePage()
</script>
<template>
<p>{{ server.name }}</p>
<p>{{ page.props.auth.user ? page.props.auth.user.name : 'visitante' }}</p>
</template>O que o handler passa chega em defineProps. O que a Engine compartilha chega em usePage().props.
| Prop | Conteúdo |
|---|---|
errors | Erros da validação. Vai em todo partial reload. |
flash | type e message de request()->message(). |
old | Campos da tentativa anterior. Senha, token e pid não voltam. |
auth.* | user sempre. Outros guards entram sozinhos quando a sessão tem {guard}_id (ex.: depois de auth::login($model, 'game_master')). Cada um é { id, name } ou null. Middleware não registra nada. |
csrf_token | Token da sessão. O cookie XSRF-TOKEN já cobre o cliente. |
document_title | Título da aba, vindo de $this->title(). |
app | name e url base do site. |
⚠️Não passe uma prop chamada title
'title' => '...' dentro de inertia() substitui $this->title() no HTML. O título fica no método.