Site

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.vue
return $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.

PropConteúdo
errorsErros da validação. Vai em todo partial reload.
flashtype e message de request()->message().
oldCampos 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_tokenToken da sessão. O cookie XSRF-TOKEN já cobre o cliente.
document_titleTítulo da aba, vindo de $this->title().
appname 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.