Ubaldo Villaba
Ubaldo Villaba

Reputation: 73

Flash message not displaying when redirecting to the same page in Laravel Jetstream + Inertia

I'm having an issue with displaying flash messages in my Laravel Jetstream application using Inertia.js. Here is the relevant code: In AppLayout.vue

<script setup>
import { usePage } from "@inertiajs/vue3";
import FlashMessage from "../Components/FlashMessage.vue";
import { ref, computed, onMounted } from "vue";

const { props: pageProps } = usePage();
const flashMessage = ref("");

const successMessage = computed(() => pageProps.flash.success);

onMounted(() => {
    if (successMessage.value) {
        flashMessage.value = successMessage.value;
    }
});
</script>

<div class="bg-white w-full shadow relative lg:fixed lg:top-0 z-50">
    <FlashMessage :success="flashMessage" />
</div>

In the handleInertiaRequest method:

public function share(Request $request): array
{
    return array_merge(parent::share($request), [
        'flash' => function () use ($request) {
            return [
                'success' => $request->session()->get('success'),
                'error' => $request->session()->get('error'),
            ];
        },
    ]);
}

In ClaseController:

public function destroy($id)
{
    $clase = Clase::find($id);

    $clase->delete();

    return redirect()->back()->with('success', 'Clase Eliminada Exitosamente');
}

Everything seems to work fine except when the flash message is redirected to the same page. The variable pageProps doesn't seem to capture the message, even though the message is definitely being received because when I print {{$page.props.flash.success}}, it shows up on the screen.

What could be causing this issue? Any help would be greatly appreciated!

Upvotes: 0

Views: 259

Answers (1)

Cordellito
Cordellito

Reputation: 36

Can we see the request from the front-end ? If you used only, you have to request flash too.

Upvotes: 0

Related Questions