Reputation: 49
Here is what I have done: Laravel 10, inertiajs v1
On HandleInertiaRequests:
public function share(Request $request): array
{
return array_merge(parent::share($request), [
'flash' => [
'success' => $request->session()->get('success')
]
]);
}
On Controller:
public function store(Request $request)
{
Listing::create($request->all());
return Redirect()->route('listing.index')->with('success', 'Listing was created!');
}
On Layout:
<template>
<div>
<Link href="/">Main Page </Link>
<Link href="/hello">Show Page</Link>
<!--<div>The page with time:{{ timer }}</div>-->
</div>
<div v-if="flashSuccess" class="success">
{{ flashSuccess }}
</div>
<slot>Default</slot>
</template>
<script setup>
import { Link, usePage } from '@inertiajs/vue3'
import { computed } from 'vue'
const page = usePage()
const flashSuccess = page.props.flash.success
</script>
My issue is the flash message is not showing however if I do a hot reload (I mean change code on editor and page auto refresh) that the message working. without reload nothing happening.
Upvotes: 0
Views: 663
Reputation: 187
Could you try changing your code to this?
Your Inertia Layout file:
<div v-if="$page.props.flash.success" class="success">
{{ $page.props.flash.success }}
</div>
Instead of directly using usePage()
Upvotes: 2