もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

Inertia利用下で flashMessageを送りたい

はじめに

こんにちは。

よく以下みたいな感じで リダイレクト時にflashMesageをセットするようなときってあると思います。

session()->flash('success_message', 'OKです!');

Inertiaを利用している状況で このセットした flashMessageをフロントに渡す際に対応した備忘録です。

こちらのページを参考にしました。

https://laracasts.com/discuss/channels/inertia/jetstream-inertiajs-how-to-return-back-with

本題

最初にController側でflashMessageをセットします。

Controller

session()->flash('success_message', 'OKです!');

次にMiddlewareのHandleInertiaRequestsでセットされたflashMessageをフロントに渡します。

Middleware

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

最後にフロントでセットされた値をもらって使います。

Vue

<script lang="ts" setup>
  const successMessage = ref(usePage().props.flash.successMessage);
</script>

<template>
        <div v-if="successMessage">
        {{ successMessage }}
      </div>
</template>

こんなかんじです。

終わりに

最近子供がインフルエンザになってしまって、自分もうつって結構しんどかったです...

非常に簡単な備忘録になっちゃいましたが以上です。