En mi controlador tengo
public function store(Request $request) { $postData = $this->validate($request, [ 'name' => 'required', 'status' => 'required | boolean' ]); Room::create([ 'name' => $postData['name'], 'active' => $postData['status'], ]); $message = "Room Added"; return redirect::route('rooms.index', ['msg' => $message]); }y usé 'msg' en mis accesorios
props:['rooms','errors','msg']Pero para {{msg}} da indefinido y no cualquier mensaje.
Estás pasando msg como un parámetro de tu ruta, no como un parámetro de tu llamada Inertia::render . Y dado que está redirigiendo, probablemente desee enviar el mensaje a la sesión y manejarlo en el middleware HandleInertiaRequests . Mire el ejemplo en la documentación .
Entonces, primero redirige a rooms.index mostrando el mensaje:
return redirect()->route('rooms.index')->with('message', 'My message'); Luego, Inertia solicita la ruta rooms.index como una solicitud XHR y antes de que llegue a su controlador, pasa a través del middleware HandleInertiaRequests .
class HandleInertiaRequests extends Middleware { public function share(Request $request) { return array_merge(parent::share($request), [ 'flash' => [ 'message' => fn () => $request->session()->get('message') ], ]); } }Ahora puede acceder a él en su componente a través de:
<template> <main> <header></header> <content> <div v-if="$page.props.flash.message" class="alert"> {{ $page.props.flash.message }} </div> <slot /> </content> <footer></footer> </main> </template>