はじめに
こんにちは。
よく以下みたいな感じで リダイレクト時に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>
こんなかんじです。
終わりに
最近子供がインフルエンザになってしまって、自分もうつって結構しんどかったです...
非常に簡単な備忘録になっちゃいましたが以上です。