Debasish Das
Debasish Das

Reputation: 49

Flash message not showing inertiajs and laravel

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>&nbsp;
        <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

Answers (1)

Avishka Senanayake
Avishka Senanayake

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

Related Questions