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